diff --git a/src/conductor/engine/workflow.py b/src/conductor/engine/workflow.py index 333d95f..324ffc7 100644 --- a/src/conductor/engine/workflow.py +++ b/src/conductor/engine/workflow.py @@ -1582,6 +1582,7 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: async with self.limits.timeout_context(): # Emit workflow_started before the execution loop self._system_metadata = self._build_system_metadata() + default_effort = self.config.workflow.runtime.default_reasoning_effort self._emit( "workflow_started", { @@ -1593,6 +1594,11 @@ async def _execute_loop(self, current_agent_name: str) -> dict[str, Any]: "name": a.name, "type": a.type or "agent", "model": a.model, + "reasoning_effort": ( + a.reasoning.effort + if a.reasoning is not None + else default_effort + ), } for a in self.config.agents ], diff --git a/src/conductor/web/frontend/src/components/detail/AgentDetail.tsx b/src/conductor/web/frontend/src/components/detail/AgentDetail.tsx index 36af37d..9bdf4f9 100644 --- a/src/conductor/web/frontend/src/components/detail/AgentDetail.tsx +++ b/src/conductor/web/frontend/src/components/detail/AgentDetail.tsx @@ -45,6 +45,7 @@ export function AgentDetail({ node }: AgentDetailProps) { output: node.output, elapsed: node.elapsed, model: node.model, + reasoning_effort: node.reasoning_effort, tokens: node.tokens, input_tokens: node.input_tokens, output_tokens: node.output_tokens, diff --git a/src/conductor/web/frontend/src/components/detail/MetadataGrid.tsx b/src/conductor/web/frontend/src/components/detail/MetadataGrid.tsx index a1c08a3..fda8a83 100644 --- a/src/conductor/web/frontend/src/components/detail/MetadataGrid.tsx +++ b/src/conductor/web/frontend/src/components/detail/MetadataGrid.tsx @@ -27,6 +27,7 @@ export function MetadataGrid({ items }: MetadataGridProps) { export function buildAgentMetadata(nd: { elapsed?: number; model?: string; + reasoning_effort?: string; tokens?: number; input_tokens?: number; output_tokens?: number; @@ -41,6 +42,7 @@ export function buildAgentMetadata(nd: { if (nd.elapsed != null) items.push({ label: 'Elapsed', value: formatElapsed(nd.elapsed) }); if (nd.model) items.push({ label: 'Model', value: nd.model }); + if (nd.reasoning_effort) items.push({ label: 'Reasoning', value: nd.reasoning_effort }); if (nd.tokens != null) items.push({ label: 'Tokens', value: formatTokens(nd.tokens) }); if (nd.input_tokens != null && nd.output_tokens != null) { items.push({ label: 'In / Out', value: `${formatTokens(nd.input_tokens)} / ${formatTokens(nd.output_tokens)}` }); diff --git a/src/conductor/web/frontend/src/stores/workflow-store.ts b/src/conductor/web/frontend/src/stores/workflow-store.ts index 7c593d4..6203c7c 100644 --- a/src/conductor/web/frontend/src/stores/workflow-store.ts +++ b/src/conductor/web/frontend/src/stores/workflow-store.ts @@ -53,6 +53,7 @@ export interface IterationSnapshot { output?: unknown; elapsed?: number; model?: string; + reasoning_effort?: string; tokens?: number; input_tokens?: number; output_tokens?: number; @@ -82,6 +83,7 @@ export interface NodeData { type: NodeType; elapsed?: number; model?: string; + reasoning_effort?: string; // Context window tracking context_pct?: number; context_window_used?: number; @@ -142,6 +144,7 @@ export interface WorkflowAgent { name: string; type?: string; model?: string; + reasoning_effort?: string | null; } export interface ParallelGroup { @@ -936,6 +939,7 @@ const eventHandlers: Record; + agents: Array<{ name: string; type?: string; model?: string; reasoning_effort?: string | null }>; routes: Array<{ from: string; to: string; when?: string }>; parallel_groups?: Array<{ name: string; agents: string[] }>; for_each_groups?: Array<{ name: string }>; diff --git a/src/conductor/web/static/assets/index-C_kyLX-T.js b/src/conductor/web/static/assets/index-BoZxUtZP.js similarity index 96% rename from src/conductor/web/static/assets/index-C_kyLX-T.js rename to src/conductor/web/static/assets/index-BoZxUtZP.js index 723075d..1b82259 100644 --- a/src/conductor/web/static/assets/index-C_kyLX-T.js +++ b/src/conductor/web/static/assets/index-BoZxUtZP.js @@ -251,7 +251,7 @@ Error generating stack: `+f.message+` * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. - */const EN=$e("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),ev=e=>{let t;const r=new Set,l=(h,m)=>{const p=typeof h=="function"?h(t):h;if(!Object.is(p,t)){const x=t;t=m??(typeof p!="object"||p===null)?p:Object.assign({},t,p),r.forEach(b=>b(t,x))}},a=()=>t,c={setState:l,getState:a,getInitialState:()=>d,subscribe:h=>(r.add(h),()=>r.delete(h))},d=t=e(l,a,c);return c},NN=(e=>e?ev(e):ev),CN=e=>e;function TN(e,t=CN){const r=ta.useSyncExternalStore(e.subscribe,ta.useCallback(()=>t(e.getState()),[e,t]),ta.useCallback(()=>t(e.getInitialState()),[e,t]));return ta.useDebugValue(r),r}const tv=e=>{const t=NN(e),r=l=>TN(t,l);return Object.assign(r,t),r},jN=(e=>e?tv(e):tv);function qe(e,t,r="agent"){return e[t]||(e[t]={name:t,status:"pending",type:r,activity:[]}),e[t].activity||(e[t].activity=[]),e[t]}function zu(e,t,r){qe(e,t).activity.push(r)}function De(e,t){e[t]&&(e[t]={...e[t]})}function xo(e,t,r,l){const a=e[t];if(!(a!=null&&a.for_each_items))return;const o=a.for_each_items.find(u=>u.key===r);o&&o.activity.push(l)}function AN(e,t,r,l){return{parentAgent:e,iteration:t,slotKey:l??e,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function tr(e,t){if(t.length===0)return null;let r=e[t[0]];for(let l=1;l=0;c--)if(l[c].slotKey===o){u=c;break}if(u===-1)return null;r.push(u),a=l[u],l=a.children}return{indexPath:r,ctx:a}}function zN(e,t){for(let r=e.length-1;r>=0;r--){const l=e[r];if(l.slotKey===t)return{ctx:l,index:r}}return null}const fe=jN((e,t)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,iterationLimitGate:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const o=fe.getState()._wsSend;o&&o({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},activeDialog:null,dialogEngaged:!1,engageDialog:()=>{e({dialogEngaged:!0})},sendDialogMessage:(r,l,a)=>{const o=fe.getState()._wsSend;o&&o({type:"dialog_message",agent_name:r,dialog_id:l,content:a})},sendDialogDecline:(r,l)=>{const a=fe.getState()._wsSend;a&&a({type:"dialog_decline",agent_name:r,dialog_id:l})},processEvent:r=>{const l=Mu[r.type];e(a=>{const o={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(o,r.data,r.timestamp);const u=Du(r);u&&o.eventLog.push(u);const c=Ru(r);return c&&o.activityLog.push(c),o})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const o of r){const u=Mu[o.type];u&&u(a,o.data,o.timestamp);const c=Du(o);c&&a.eventLog.push(c);const d=Ru(o);d&&a.activityLog.push(d),a.lastEventTime=o.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const o of r){const u=Mu[o.type];u&&u(a,o.data,o.timestamp);const c=Du(o);c&&a.eventLog.push(c);const d=Ru(o);d&&a.activityLog.push(d),a.lastEventTime=o.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),o={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,iterationLimitGate:null,lastEventTime:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const c=Mu[u.type];c&&c(o,u.data,u.timestamp);const d=Du(u);d&&o.eventLog.push(d);const h=Ru(u);h&&o.activityLog.push(h),o.lastEventTime=u.timestamp}return o})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(o=>({highlightedEdges:[...o.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(o=>!(o.from===r&&o.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:r=>{const l=t(),a=l.viewContextPath;let o;if(a.length===0)o=l.subworkflowContexts;else{const c=tr(l.subworkflowContexts,a);if(!c)return;o=c.children}const u=zN(o,r);u&&e({viewContextPath:[...a,u.index],selectedNode:null})},getViewedContext:()=>{const r=t();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=tr(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=t(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let o=0;o0&&(r=((a=Vi(e.subworkflowContexts,l))==null?void 0:a.ctx)??null),r){const o=r;return{nodes:o.nodes,groupProgress:o.groupProgress,routes:o.routes,highlightedEdges:o.highlightedEdges,addCost:u=>{o.totalCost+=u,e.totalCost+=u},addTokens:u=>{o.totalTokens+=u,e.totalTokens+=u},incrCompleted:()=>{o.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:o=>{e.totalCost+=o},addTokens:o=>{e.totalTokens+=o},incrCompleted:()=>{e.agentsCompleted++}}}const Mu={workflow_started:(e,t,r)=>{var a;const l=t;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=t.yaml_source??null,e.conductorVersion=t.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],qe(e.nodes,"$start","start"),e.nodes.$start.status="running",De(e.nodes,"$start");const o=new Set,u=new Set;for(const c of e.parallelGroups){for(const d of c.agents)o.add(d);u.add(c.name),qe(e.nodes,c.name,"parallel_group"),e.groupProgress[c.name]={total:c.agents.length,completed:0,failed:0};for(const d of c.agents)qe(e.nodes,d,"agent")}for(const c of e.forEachGroups)u.add(c.name),qe(e.nodes,c.name,"for_each_group"),e.groupProgress[c.name]={total:0,completed:0,failed:0};for(const c of e.agents)if(!u.has(c.name)&&!o.has(c.name)){const d=c.type||"agent";qe(e.nodes,c.name,d),c.model&&(e.nodes[c.name].model=c.model),u.add(c.name)}e.agentsTotal=u.size}else{const o=t.subworkflow_path,u=Array.isArray(o)&&o.length>0?((a=Vi(e.subworkflowContexts,o))==null?void 0:a.ctx)??null:tr(e.subworkflowContexts,e.activeContextPath);if(u){u.workflowName=l.name||"",u.status="running",u.entryPoint=l.entry_point||null,u.agents=l.agents||[],u.routes=l.routes||[],u.parallelGroups=l.parallel_groups||[],u.forEachGroups=l.for_each_groups||[],qe(u.nodes,"$start","start"),u.nodes.$start.status="running";const c=new Set,d=new Set;for(const h of u.parallelGroups){for(const m of h.agents)c.add(m);d.add(h.name),qe(u.nodes,h.name,"parallel_group"),u.groupProgress[h.name]={total:h.agents.length,completed:0,failed:0};for(const m of h.agents)qe(u.nodes,m,"agent")}for(const h of u.forEachGroups)d.add(h.name),qe(u.nodes,h.name,"for_each_group"),u.groupProgress[h.name]={total:0,completed:0,failed:0};for(const h of u.agents)if(!d.has(h.name)&&!c.has(h.name)){const m=h.type||"agent";qe(u.nodes,h.name,m),h.model&&(u.nodes[h.name].model=h.model),d.add(h.name)}u.agentsTotal=d.size}}e.wfDepth++},agent_started:(e,t,r)=>{const l=t,a=ht(e,t),o=qe(a.nodes,l.agent_name);o.iteration!=null&&(o.output!=null||o.error_type!=null)&&(o.iterationHistory||(o.iterationHistory=[]),o.iterationHistory.push({iteration:o.iteration,prompt:o.prompt,output:o.output,elapsed:o.elapsed,model:o.model,tokens:o.tokens,input_tokens:o.input_tokens,output_tokens:o.output_tokens,cost_usd:o.cost_usd,activity:o.activity,error_type:o.error_type,error_message:o.error_message})),o.status="running",o.iteration=l.iteration,o.startedAt=r??Date.now()/1e3,o.activity=[],l.context_window_max!=null&&(o.context_window_max=l.context_window_max),o.prompt=void 0,o.output=void 0,o.error_type=void 0,o.error_message=void 0,De(a.nodes,l.agent_name)},agent_completed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),De(l.nodes,r.agent_name)},agent_failed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const o of l.routes)o.to===r.agent_name&&l.highlightedEdges.push({from:o.from,to:o.to,state:"failed"});De(l.nodes,r.agent_name)},agent_prompt_rendered:(e,t)=>{var u;const r=t,l=t.item_key,a=ht(e,t),o=qe(a.nodes,r.agent_name);if(o.prompt=r.rendered_prompt,o.context_keys=r.context_keys,l){xo(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const c=a.nodes[r.agent_name];if(c!=null&&c.for_each_items){const d=c.for_each_items.find(h=>h.key===l);d&&(d.prompt=r.rendered_prompt)}}De(a.nodes,r.agent_name)},agent_reasoning:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"reasoning",icon:"💭",label:"thinking",text:r.content};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_tool_start:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_tool_complete:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_turn_start:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_message:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.latest_message=r.content,De(l.nodes,r.agent_name)},script_started:(e,t,r)=>{const l=t,a=ht(e,t),o=qe(a.nodes,l.agent_name);o.status="running",o.startedAt=r??Date.now()/1e3,De(a.nodes,l.agent_name)},script_completed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,De(l.nodes,r.agent_name)},script_failed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,De(l.nodes,r.agent_name)},gate_presented:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,De(l.nodes,r.agent_name)},gate_resolved:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,De(l.nodes,r.agent_name)},route_taken:(e,t)=>{const r=t;ht(e,t).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),De(l.nodes,r.group_name)},parallel_agent_completed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),De(l.nodes,r.agent_name),De(l.nodes,r.group_name)},parallel_agent_failed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,De(l.nodes,r.agent_name),De(l.nodes,r.group_name)},parallel_completed:(e,t)=>{const r=t,l=ht(e,t);l.incrCompleted();const a=qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",De(l.nodes,r.group_name)},for_each_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),De(l.nodes,r.group_name)},for_each_item_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),De(l.nodes,r.group_name)},for_each_item_completed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const o=r.item_key??String(r.index),u=a.for_each_items.find(c=>c.key===o);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}De(l.nodes,r.group_name)},for_each_item_failed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const o=r.item_key??String(r.index),u=a.for_each_items.find(c=>c.key===o);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}De(l.nodes,r.group_name)},for_each_completed:(e,t)=>{const r=t,l=ht(e,t);l.incrCompleted();const a=qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,De(l.nodes,r.group_name)},workflow_completed:(e,t)=>{var r;if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const l=t;e.workflowStatus="completed",e.isPaused=!1,e.iterationLimitGate=null,e.workflowOutput=l.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",De(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",De(e.nodes,"$start")),e.highlightedEdges=[]}else{const l=t,a=l.subworkflow_path?(r=Vi(e.subworkflowContexts,l.subworkflow_path))==null?void 0:r.ctx:tr(e.subworkflowContexts,e.activeContextPath);a&&(a.status="completed",a.workflowOutput=l.output??null,a.nodes.$end&&(a.nodes.$end.status="completed"),a.nodes.$start&&(a.nodes.$start.status="completed"),a.highlightedEdges=[])}},workflow_failed:(e,t)=>{var l;e.wfDepth=Math.max(0,e.wfDepth-1);const r=t;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.iterationLimitGate=null,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",De(e.nodes,r.agent_name);for(const a of e.routes)a.to===r.agent_name&&e.highlightedEdges.push({from:a.from,to:a.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",De(e.nodes,"$start"))}else{const a=r.subworkflow_path?(l=Vi(e.subworkflowContexts,r.subworkflow_path))==null?void 0:l.ctx:tr(e.subworkflowContexts,e.activeContextPath);a&&(a.status="failed",a.workflowFailure={error_type:r.error_type,message:r.message})}},subworkflow_started:(e,t)=>{const r=t,l=r.slot_key??(r.item_key!=null?`${r.agent_name}[${r.item_key}]`:r.agent_name),a=AN(r.agent_name,r.iteration??1,r.workflow,l);let o;if(r.parent_path!==void 0){const c=Vi(e.subworkflowContexts,r.parent_path);if(!c)return;o=c.indexPath}else o=e.activeContextPath;let u;if(o.length===0)e.subworkflowContexts.push(a),u=[e.subworkflowContexts.length-1];else{const c=tr(e.subworkflowContexts,o);if(!c)return;c.children.push(a),u=[...o,c.children.length-1]}if(e.activeContextPath=u,o.length===0){const c=e.nodes[r.agent_name];c&&(c.status="running",De(e.nodes,r.agent_name))}else{const c=tr(e.subworkflowContexts,o);if(c){const d=c.nodes[r.agent_name];d&&(d.status="running",De(c.nodes,r.agent_name))}}},subworkflow_completed:(e,t)=>{var o;const r=t;let l;if(r.parent_path!==void 0){const u=Vi(e.subworkflowContexts,r.parent_path);if(!u)return;l=u.indexPath}else l=e.activeContextPath;const a=l.length===0?e.nodes:(o=tr(e.subworkflowContexts,l))==null?void 0:o.nodes;if(a){const u=a[r.agent_name];if(u){if(r.item_key==null)if(u.status="completed",u.elapsed=r.elapsed,l.length===0)e.agentsCompleted++;else{const c=tr(e.subworkflowContexts,l);c&&c.agentsCompleted++}De(a,r.agent_name)}}e.activeContextPath=l},subworkflow_failed:(e,t)=>{var o;const r=t;let l;if(r.parent_path!==void 0){const u=Vi(e.subworkflowContexts,r.parent_path);if(!u)return;l=u.indexPath}else l=e.activeContextPath;const a=l.length===0?e.nodes:(o=tr(e.subworkflowContexts,l))==null?void 0:o.nodes;if(a){const u=a[r.agent_name];u&&r.item_key==null&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message,De(a,r.agent_name))}e.activeContextPath=l},checkpoint_saved:(e,t)=>{const r=t;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),De(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),De(e.nodes,r.agent_name),e.isPaused=!1},iteration_limit_reached:(e,t)=>{const r=t;e.iterationLimitGate=r;const l=r.agent_name??r.group_name;l?(qe(e.nodes,l).activity.push({type:"iteration_limit_reached",icon:"⚠",label:"Iteration limit",text:`Reached ${r.current_iteration}/${r.max_iterations} iterations — ${r.skip_gates?"auto-stopping (--skip-gates)":"awaiting console input"}`}),De(e.nodes,l)):typeof console<"u"&&console.warn("[workflow-store] iteration_limit_reached event missing both agent_name and group_name",r)},iteration_limit_resolved:(e,t)=>{const r=t;e.iterationLimitGate=null;const l=r.agent_name??r.group_name;l?(qe(e.nodes,l).activity.push({type:"iteration_limit_resolved",icon:r.continue_execution?"▶":"■",label:"Iteration limit",text:r.aborted?"Gate aborted unexpectedly — stopping workflow":r.continue_execution?`Continuing with ${r.additional_iterations} more iteration(s)`:"Stopping workflow"}),De(e.nodes,l)):typeof console<"u"&&console.warn("[workflow-store] iteration_limit_resolved event missing both agent_name and group_name",r)},dialog_started:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_id=r.dialog_id,l.dialog_messages=[],l.dialog_active=!0,l.dialog_awaiting_response=!1,e.activeDialog={agentName:r.agent_name,dialogId:r.dialog_id},e.dialogEngaged=!1,De(e.nodes,r.agent_name)},dialog_message:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_messages||(l.dialog_messages=[]),l.dialog_messages.push({role:r.role,content:r.content}),r.role==="user"?l.dialog_awaiting_response=!0:r.role==="agent"&&(l.dialog_awaiting_response=!1),De(e.nodes,r.agent_name)},dialog_completed:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_active=!1,l.dialog_awaiting_response=!1,e.activeDialog=null,e.dialogEngaged=!1,De(e.nodes,r.agent_name)}};function Du(e){var l,a;const t=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:t,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:t,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:t,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:t,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:t,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:t,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:t,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:t,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:t,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:t,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:t,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:t,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:t,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:t,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};case"iteration_limit_reached":{const o=r.agent_name??r.group_name??"workflow",u=r.skip_gates?" — auto-stopping (--skip-gates)":" — awaiting console input";return{timestamp:t,level:"warning",source:String(o),message:`Iteration limit reached (${r.current_iteration}/${r.max_iterations})${u}`}}case"iteration_limit_resolved":{const o=r.agent_name??r.group_name??"workflow",u=!!r.continue_execution,c=r.additional_iterations??0;return{timestamp:t,level:u?"info":"warning",source:String(o),message:u?`Iteration limit resolved — continuing with ${c} more`:"Iteration limit resolved — stopping workflow"}}case"dialog_started":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Dialog started — waiting for user…"};case"dialog_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Dialog completed (${r.turn_count||0} messages)`};default:return null}}function Qu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const t=Math.floor(e/60),r=(e%60).toFixed(0);return`${t}m ${r}s`}function Ru(e){const t=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:t,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:yo(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:t,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:t,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?yo(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:t,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?yo(String(r.result),300):null};case"agent_turn_start":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:t,source:String(r.agent_name),type:"message",message:yo(String(r.content||""),500)};case"agent_completed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:t,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:t,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?yo(String(r.stdout),300):null};case"script_failed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function yo(e,t){return e.length<=t?e:e.slice(0,t)+"…"}function nv(e){const t=e.match(/^(\s*)/);return t?t[1].length:0}function MN(e){const t=new Map;for(let r=0;ra)o=u;else break}o>r&&t.set(r,o)}return t}function DN(e){if(/^\s*#/.test(e))return y.jsx("span",{className:"text-emerald-500/70",children:e});const t=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(t){const[,l,a,o,u,c]=t;return y.jsxs("span",{children:[l,a??"",y.jsx("span",{className:"text-sky-400",children:o}),y.jsx("span",{className:"text-[var(--text-muted)]",children:u}),rv(c??"")]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,o]=r;return y.jsxs("span",{children:[l,y.jsx("span",{className:"text-[var(--text-muted)]",children:a}),rv(o??"")]})}return y.jsx("span",{children:e})}function rv(e){if(!e)return"";const t=e.indexOf(" #"),r=t>=0?e.slice(0,t):e,l=t>=0?e.slice(t):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=y.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=y.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=y.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=y.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),y.jsxs(y.Fragment,{children:[a,l&&y.jsx("span",{className:"text-emerald-500/70",children:l})]})}function RN({yaml:e,onClose:t}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const d=h=>{h.key==="Escape"&&t()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[t]);const a=V.useMemo(()=>e.split(` + */const EN=$e("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]]),ev=e=>{let t;const r=new Set,l=(h,m)=>{const p=typeof h=="function"?h(t):h;if(!Object.is(p,t)){const x=t;t=m??(typeof p!="object"||p===null)?p:Object.assign({},t,p),r.forEach(b=>b(t,x))}},a=()=>t,c={setState:l,getState:a,getInitialState:()=>d,subscribe:h=>(r.add(h),()=>r.delete(h))},d=t=e(l,a,c);return c},NN=(e=>e?ev(e):ev),CN=e=>e;function TN(e,t=CN){const r=ta.useSyncExternalStore(e.subscribe,ta.useCallback(()=>t(e.getState()),[e,t]),ta.useCallback(()=>t(e.getInitialState()),[e,t]));return ta.useDebugValue(r),r}const tv=e=>{const t=NN(e),r=l=>TN(t,l);return Object.assign(r,t),r},jN=(e=>e?tv(e):tv);function qe(e,t,r="agent"){return e[t]||(e[t]={name:t,status:"pending",type:r,activity:[]}),e[t].activity||(e[t].activity=[]),e[t]}function zu(e,t,r){qe(e,t).activity.push(r)}function De(e,t){e[t]&&(e[t]={...e[t]})}function xo(e,t,r,l){const a=e[t];if(!(a!=null&&a.for_each_items))return;const o=a.for_each_items.find(u=>u.key===r);o&&o.activity.push(l)}function AN(e,t,r,l){return{parentAgent:e,iteration:t,slotKey:l??e,workflowFile:r,workflowName:"",status:"pending",agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],entryPoint:null,children:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,eventLog:[],activityLog:[],workflowOutput:null,workflowFailure:null}}function tr(e,t){if(t.length===0)return null;let r=e[t[0]];for(let l=1;l=0;c--)if(l[c].slotKey===o){u=c;break}if(u===-1)return null;r.push(u),a=l[u],l=a.children}return{indexPath:r,ctx:a}}function zN(e,t){for(let r=e.length-1;r>=0;r--){const l=e[r];if(l.slotKey===t)return{ctx:l,index:r}}return null}const fe=jN((e,t)=>({workflowName:"",workflowStatus:"pending",workflowStartTime:null,workflowFailure:null,workflowFailedAgent:null,workflowYaml:null,conductorVersion:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],nodes:{},groupProgress:{},highlightedEdges:[],agentsCompleted:0,agentsTotal:0,totalCost:0,totalTokens:0,selectedNode:null,wsStatus:"connecting",eventLog:[],activityLog:[],workflowOutput:null,lastEventTime:null,isPaused:!1,iterationLimitGate:null,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[],replayMode:!1,replayEvents:[],replayPosition:0,replayTotalEvents:0,replayPlaying:!1,replaySpeed:1,_wsSend:null,setWsSend:r=>{e({_wsSend:r})},sendGateResponse:(r,l,a)=>{const o=fe.getState()._wsSend;o&&o({type:"gate_response",agent_name:r,selected_value:l,additional_input:a||{}})},activeDialog:null,dialogEngaged:!1,engageDialog:()=>{e({dialogEngaged:!0})},sendDialogMessage:(r,l,a)=>{const o=fe.getState()._wsSend;o&&o({type:"dialog_message",agent_name:r,dialog_id:l,content:a})},sendDialogDecline:(r,l)=>{const a=fe.getState()._wsSend;a&&a({type:"dialog_decline",agent_name:r,dialog_id:l})},processEvent:r=>{const l=Mu[r.type];e(a=>{const o={...a,nodes:{...a.nodes},groupProgress:{...a.groupProgress},eventLog:[...a.eventLog],activityLog:[...a.activityLog],lastEventTime:r.timestamp};l&&l(o,r.data,r.timestamp);const u=Du(r);u&&o.eventLog.push(u);const c=Ru(r);return c&&o.activityLog.push(c),o})},replayState:r=>{e(l=>{const a={...l,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[]};for(const o of r){const u=Mu[o.type];u&&u(a,o.data,o.timestamp);const c=Du(o);c&&a.eventLog.push(c);const d=Ru(o);d&&a.activityLog.push(d),a.lastEventTime=o.timestamp}return a})},selectNode:r=>{e({selectedNode:r})},setReplayMode:r=>{e(l=>{const a={...l,replayMode:!0,replayEvents:r,replayTotalEvents:r.length,replayPosition:r.length,replayPlaying:!1,replaySpeed:1,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const o of r){const u=Mu[o.type];u&&u(a,o.data,o.timestamp);const c=Du(o);c&&a.eventLog.push(c);const d=Ru(o);d&&a.activityLog.push(d),a.lastEventTime=o.timestamp}return a})},setReplayPosition:r=>{e(l=>{const a=l.replayEvents.slice(0,r),o={...l,replayPosition:r,agentsCompleted:0,totalCost:0,totalTokens:0,nodes:{},groupProgress:{},highlightedEdges:[],eventLog:[],activityLog:[],workflowOutput:null,workflowFailedAgent:null,workflowStatus:"pending",workflowStartTime:null,workflowName:"",workflowFailure:null,entryPoint:null,agents:[],routes:[],parallelGroups:[],forEachGroups:[],isPaused:!1,iterationLimitGate:null,lastEventTime:null,activeDialog:null,dialogEngaged:!1,wfDepth:0,subworkflowContexts:[],activeContextPath:[],viewContextPath:[]};for(const u of a){const c=Mu[u.type];c&&c(o,u.data,u.timestamp);const d=Du(u);d&&o.eventLog.push(d);const h=Ru(u);h&&o.activityLog.push(h),o.lastEventTime=u.timestamp}return o})},setReplayPlaying:r=>{e({replayPlaying:r})},setReplaySpeed:r=>{e({replaySpeed:r})},setWsStatus:r=>{e({wsStatus:r})},setEdgeHighlight:(r,l,a)=>{e(o=>({highlightedEdges:[...o.highlightedEdges.filter(u=>!(u.from===r&&u.to===l)),{from:r,to:l,state:a}]}))},clearEdgeHighlight:(r,l)=>{e(a=>({highlightedEdges:a.highlightedEdges.filter(o=>!(o.from===r&&o.to===l))}))},navigateToContext:r=>{e({viewContextPath:r,selectedNode:null})},navigateUp:()=>{e(r=>({viewContextPath:r.viewContextPath.slice(0,-1),selectedNode:null}))},navigateIntoSubworkflow:r=>{const l=t(),a=l.viewContextPath;let o;if(a.length===0)o=l.subworkflowContexts;else{const c=tr(l.subworkflowContexts,a);if(!c)return;o=c.children}const u=zN(o,r);u&&e({viewContextPath:[...a,u.index],selectedNode:null})},getViewedContext:()=>{const r=t();if(r.viewContextPath.length===0)return{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts};const l=tr(r.subworkflowContexts,r.viewContextPath);return l?{workflowName:l.workflowName,agents:l.agents,routes:l.routes,parallelGroups:l.parallelGroups,forEachGroups:l.forEachGroups,nodes:l.nodes,groupProgress:l.groupProgress,highlightedEdges:l.highlightedEdges,entryPoint:l.entryPoint,subworkflowContexts:l.children}:{workflowName:r.workflowName,agents:r.agents,routes:r.routes,parallelGroups:r.parallelGroups,forEachGroups:r.forEachGroups,nodes:r.nodes,groupProgress:r.groupProgress,highlightedEdges:r.highlightedEdges,entryPoint:r.entryPoint,subworkflowContexts:r.subworkflowContexts}},getBreadcrumbs:()=>{const r=t(),l=[{label:r.workflowName||"Root",path:[]}];let a=r.subworkflowContexts;for(let o=0;o0&&(r=((a=Vi(e.subworkflowContexts,l))==null?void 0:a.ctx)??null),r){const o=r;return{nodes:o.nodes,groupProgress:o.groupProgress,routes:o.routes,highlightedEdges:o.highlightedEdges,addCost:u=>{o.totalCost+=u,e.totalCost+=u},addTokens:u=>{o.totalTokens+=u,e.totalTokens+=u},incrCompleted:()=>{o.agentsCompleted++,e.agentsCompleted++}}}return{nodes:e.nodes,groupProgress:e.groupProgress,routes:e.routes,highlightedEdges:e.highlightedEdges,addCost:o=>{e.totalCost+=o},addTokens:o=>{e.totalTokens+=o},incrCompleted:()=>{e.agentsCompleted++}}}const Mu={workflow_started:(e,t,r)=>{var a;const l=t;if(e.wfDepth===0){e.workflowStatus="running",e.workflowStartTime=r??Date.now()/1e3,e.workflowName=l.name||"",e.workflowYaml=t.yaml_source??null,e.conductorVersion=t.version??null,e.entryPoint=l.entry_point||null,e.agents=l.agents||[],e.routes=l.routes||[],e.parallelGroups=l.parallel_groups||[],e.forEachGroups=l.for_each_groups||[],qe(e.nodes,"$start","start"),e.nodes.$start.status="running",De(e.nodes,"$start");const o=new Set,u=new Set;for(const c of e.parallelGroups){for(const d of c.agents)o.add(d);u.add(c.name),qe(e.nodes,c.name,"parallel_group"),e.groupProgress[c.name]={total:c.agents.length,completed:0,failed:0};for(const d of c.agents)qe(e.nodes,d,"agent")}for(const c of e.forEachGroups)u.add(c.name),qe(e.nodes,c.name,"for_each_group"),e.groupProgress[c.name]={total:0,completed:0,failed:0};for(const c of e.agents)if(!u.has(c.name)&&!o.has(c.name)){const d=c.type||"agent";qe(e.nodes,c.name,d),c.model&&(e.nodes[c.name].model=c.model),c.reasoning_effort&&(e.nodes[c.name].reasoning_effort=c.reasoning_effort),u.add(c.name)}e.agentsTotal=u.size}else{const o=t.subworkflow_path,u=Array.isArray(o)&&o.length>0?((a=Vi(e.subworkflowContexts,o))==null?void 0:a.ctx)??null:tr(e.subworkflowContexts,e.activeContextPath);if(u){u.workflowName=l.name||"",u.status="running",u.entryPoint=l.entry_point||null,u.agents=l.agents||[],u.routes=l.routes||[],u.parallelGroups=l.parallel_groups||[],u.forEachGroups=l.for_each_groups||[],qe(u.nodes,"$start","start"),u.nodes.$start.status="running";const c=new Set,d=new Set;for(const h of u.parallelGroups){for(const m of h.agents)c.add(m);d.add(h.name),qe(u.nodes,h.name,"parallel_group"),u.groupProgress[h.name]={total:h.agents.length,completed:0,failed:0};for(const m of h.agents)qe(u.nodes,m,"agent")}for(const h of u.forEachGroups)d.add(h.name),qe(u.nodes,h.name,"for_each_group"),u.groupProgress[h.name]={total:0,completed:0,failed:0};for(const h of u.agents)if(!d.has(h.name)&&!c.has(h.name)){const m=h.type||"agent";qe(u.nodes,h.name,m),h.model&&(u.nodes[h.name].model=h.model),h.reasoning_effort&&(u.nodes[h.name].reasoning_effort=h.reasoning_effort),d.add(h.name)}u.agentsTotal=d.size}}e.wfDepth++},agent_started:(e,t,r)=>{const l=t,a=ht(e,t),o=qe(a.nodes,l.agent_name);o.iteration!=null&&(o.output!=null||o.error_type!=null)&&(o.iterationHistory||(o.iterationHistory=[]),o.iterationHistory.push({iteration:o.iteration,prompt:o.prompt,output:o.output,elapsed:o.elapsed,model:o.model,reasoning_effort:o.reasoning_effort,tokens:o.tokens,input_tokens:o.input_tokens,output_tokens:o.output_tokens,cost_usd:o.cost_usd,activity:o.activity,error_type:o.error_type,error_message:o.error_message})),o.status="running",o.iteration=l.iteration,o.startedAt=r??Date.now()/1e3,o.activity=[],l.context_window_max!=null&&(o.context_window_max=l.context_window_max),o.prompt=void 0,o.output=void 0,o.error_type=void 0,o.error_message=void 0,De(a.nodes,l.agent_name)},agent_completed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.input_tokens=r.input_tokens,a.output_tokens=r.output_tokens,a.cost_usd=r.cost_usd,a.output=r.output,a.output_keys=r.output_keys,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),De(l.nodes,r.agent_name)},agent_failed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message;for(const o of l.routes)o.to===r.agent_name&&l.highlightedEdges.push({from:o.from,to:o.to,state:"failed"});De(l.nodes,r.agent_name)},agent_prompt_rendered:(e,t)=>{var u;const r=t,l=t.item_key,a=ht(e,t),o=qe(a.nodes,r.agent_name);if(o.prompt=r.rendered_prompt,o.context_keys=r.context_keys,l){xo(a.nodes,r.agent_name,l,{type:"prompt",icon:"📝",label:"prompt",text:"Prompt rendered",detail:((u=r.rendered_prompt)==null?void 0:u.slice(0,500))||null});const c=a.nodes[r.agent_name];if(c!=null&&c.for_each_items){const d=c.for_each_items.find(h=>h.key===l);d&&(d.prompt=r.rendered_prompt)}}De(a.nodes,r.agent_name)},agent_reasoning:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"reasoning",icon:"💭",label:"thinking",text:r.content};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_tool_start:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"tool-start",icon:"🔧",label:"tool",text:r.tool_name,detail:r.arguments||null};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_tool_complete:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"tool-complete",icon:"✓",label:"result",text:r.tool_name||"done",detail:r.result||null};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_turn_start:(e,t)=>{const r=t,l=t.item_key,a=ht(e,t),o={type:"turn",icon:"⏳",label:"turn",text:`Turn ${r.turn??"?"}`};zu(a.nodes,r.agent_name,o),l&&xo(a.nodes,r.agent_name,l,o),De(a.nodes,r.agent_name)},agent_message:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.latest_message=r.content,De(l.nodes,r.agent_name)},script_started:(e,t,r)=>{const l=t,a=ht(e,t),o=qe(a.nodes,l.agent_name);o.status="running",o.startedAt=r??Date.now()/1e3,De(a.nodes,l.agent_name)},script_completed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.elapsed=r.elapsed,a.stdout=r.stdout,a.stderr=r.stderr,a.exit_code=r.exit_code,De(l.nodes,r.agent_name)},script_failed:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,De(l.nodes,r.agent_name)},gate_presented:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="waiting",a.options=r.options,a.option_details=r.option_details,a.prompt=r.prompt,De(l.nodes,r.agent_name)},gate_resolved:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.agent_name);a.status="completed",l.incrCompleted(),a.selected_option=r.selected_option,a.route=r.route,a.additional_input=r.additional_input,De(l.nodes,r.agent_name)},route_taken:(e,t)=>{const r=t;ht(e,t).highlightedEdges.push({from:r.from_agent,to:r.to_agent,state:"taken"})},parallel_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"parallel_group");a.status="running",l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.agents.length,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),De(l.nodes,r.group_name)},parallel_agent_completed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=qe(l.nodes,r.agent_name);a.status="completed",a.elapsed=r.elapsed,a.model=r.model,a.tokens=r.tokens,a.cost_usd=r.cost_usd,a.context_window_used=r.context_window_used,a.context_window_max=r.context_window_max,r.context_window_used!=null&&r.context_window_max!=null&&r.context_window_max>0&&(a.context_pct=Math.round(r.context_window_used/r.context_window_max*100)),r.cost_usd&&l.addCost(r.cost_usd),r.tokens&&l.addTokens(r.tokens),De(l.nodes,r.agent_name),De(l.nodes,r.group_name)},parallel_agent_failed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=qe(l.nodes,r.agent_name);a.status="failed",a.elapsed=r.elapsed,a.error_type=r.error_type,a.error_message=r.message,De(l.nodes,r.agent_name),De(l.nodes,r.group_name)},parallel_completed:(e,t)=>{const r=t,l=ht(e,t);l.incrCompleted();const a=qe(l.nodes,r.group_name,"parallel_group");a.status=r.failure_count===0?"completed":"failed",De(l.nodes,r.group_name)},for_each_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"for_each_group");a.status="running",a.for_each_items=[],l.groupProgress[r.group_name]&&(l.groupProgress[r.group_name].total=r.item_count,l.groupProgress[r.group_name].completed=0,l.groupProgress[r.group_name].failed=0),De(l.nodes,r.group_name)},for_each_item_started:(e,t)=>{const r=t,l=ht(e,t),a=qe(l.nodes,r.group_name,"for_each_group");a.for_each_items||(a.for_each_items=[]),a.for_each_items.push({key:r.item_key??String(r.index),index:r.index,status:"running",activity:[]}),De(l.nodes,r.group_name)},for_each_item_completed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].completed++;const a=qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const o=r.item_key??String(r.index),u=a.for_each_items.find(c=>c.key===o);u&&(u.status="completed",u.elapsed=r.elapsed,u.tokens=r.tokens,u.cost_usd=r.cost_usd,u.output=r.output)}De(l.nodes,r.group_name)},for_each_item_failed:(e,t)=>{const r=t,l=ht(e,t);l.groupProgress[r.group_name]&&l.groupProgress[r.group_name].failed++;const a=qe(l.nodes,r.group_name,"for_each_group");if(a.for_each_items){const o=r.item_key??String(r.index),u=a.for_each_items.find(c=>c.key===o);u&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message)}De(l.nodes,r.group_name)},for_each_completed:(e,t)=>{const r=t,l=ht(e,t);l.incrCompleted();const a=qe(l.nodes,r.group_name,"for_each_group");a.status=(r.failure_count??0)===0?"completed":"failed",a.elapsed=r.elapsed,a.success_count=r.success_count,a.failure_count=r.failure_count,De(l.nodes,r.group_name)},workflow_completed:(e,t)=>{var r;if(e.wfDepth=Math.max(0,e.wfDepth-1),e.wfDepth===0){const l=t;e.workflowStatus="completed",e.isPaused=!1,e.iterationLimitGate=null,e.workflowOutput=l.output??null,e.nodes.$end&&(e.nodes.$end.status="completed",De(e.nodes,"$end")),e.nodes.$start&&(e.nodes.$start.status="completed",De(e.nodes,"$start")),e.highlightedEdges=[]}else{const l=t,a=l.subworkflow_path?(r=Vi(e.subworkflowContexts,l.subworkflow_path))==null?void 0:r.ctx:tr(e.subworkflowContexts,e.activeContextPath);a&&(a.status="completed",a.workflowOutput=l.output??null,a.nodes.$end&&(a.nodes.$end.status="completed"),a.nodes.$start&&(a.nodes.$start.status="completed"),a.highlightedEdges=[])}},workflow_failed:(e,t)=>{var l;e.wfDepth=Math.max(0,e.wfDepth-1);const r=t;if(e.wfDepth===0){if(e.workflowStatus="failed",e.isPaused=!1,e.iterationLimitGate=null,e.workflowFailedAgent=r.agent_name||null,r.agent_name&&e.nodes[r.agent_name]){e.nodes[r.agent_name].status="failed",De(e.nodes,r.agent_name);for(const a of e.routes)a.to===r.agent_name&&e.highlightedEdges.push({from:a.from,to:a.to,state:"failed"})}e.workflowFailure={error_type:r.error_type,message:r.message,elapsed_seconds:r.elapsed_seconds,timeout_seconds:r.timeout_seconds,current_agent:r.current_agent},e.nodes.$start&&(e.nodes.$start.status="completed",De(e.nodes,"$start"))}else{const a=r.subworkflow_path?(l=Vi(e.subworkflowContexts,r.subworkflow_path))==null?void 0:l.ctx:tr(e.subworkflowContexts,e.activeContextPath);a&&(a.status="failed",a.workflowFailure={error_type:r.error_type,message:r.message})}},subworkflow_started:(e,t)=>{const r=t,l=r.slot_key??(r.item_key!=null?`${r.agent_name}[${r.item_key}]`:r.agent_name),a=AN(r.agent_name,r.iteration??1,r.workflow,l);let o;if(r.parent_path!==void 0){const c=Vi(e.subworkflowContexts,r.parent_path);if(!c)return;o=c.indexPath}else o=e.activeContextPath;let u;if(o.length===0)e.subworkflowContexts.push(a),u=[e.subworkflowContexts.length-1];else{const c=tr(e.subworkflowContexts,o);if(!c)return;c.children.push(a),u=[...o,c.children.length-1]}if(e.activeContextPath=u,o.length===0){const c=e.nodes[r.agent_name];c&&(c.status="running",De(e.nodes,r.agent_name))}else{const c=tr(e.subworkflowContexts,o);if(c){const d=c.nodes[r.agent_name];d&&(d.status="running",De(c.nodes,r.agent_name))}}},subworkflow_completed:(e,t)=>{var o;const r=t;let l;if(r.parent_path!==void 0){const u=Vi(e.subworkflowContexts,r.parent_path);if(!u)return;l=u.indexPath}else l=e.activeContextPath;const a=l.length===0?e.nodes:(o=tr(e.subworkflowContexts,l))==null?void 0:o.nodes;if(a){const u=a[r.agent_name];if(u){if(r.item_key==null)if(u.status="completed",u.elapsed=r.elapsed,l.length===0)e.agentsCompleted++;else{const c=tr(e.subworkflowContexts,l);c&&c.agentsCompleted++}De(a,r.agent_name)}}e.activeContextPath=l},subworkflow_failed:(e,t)=>{var o;const r=t;let l;if(r.parent_path!==void 0){const u=Vi(e.subworkflowContexts,r.parent_path);if(!u)return;l=u.indexPath}else l=e.activeContextPath;const a=l.length===0?e.nodes:(o=tr(e.subworkflowContexts,l))==null?void 0:o.nodes;if(a){const u=a[r.agent_name];u&&r.item_key==null&&(u.status="failed",u.elapsed=r.elapsed,u.error_type=r.error_type,u.error_message=r.message,De(a,r.agent_name))}e.activeContextPath=l},checkpoint_saved:(e,t)=>{const r=t;r.path&&e.workflowFailure&&(e.workflowFailure={...e.workflowFailure,checkpoint_path:r.path})},agent_paused:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.status="waiting",l.activity.push({type:"agent_paused",icon:"⏸",label:"Paused",text:"Agent paused — click Resume to re-execute"}),De(e.nodes,r.agent_name),e.isPaused=!0},agent_resumed:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.status="running",l.activity.push({type:"agent_resumed",icon:"▶",label:"Resumed",text:"Agent resumed — re-executing"}),De(e.nodes,r.agent_name),e.isPaused=!1},iteration_limit_reached:(e,t)=>{const r=t;e.iterationLimitGate=r;const l=r.agent_name??r.group_name;l?(qe(e.nodes,l).activity.push({type:"iteration_limit_reached",icon:"⚠",label:"Iteration limit",text:`Reached ${r.current_iteration}/${r.max_iterations} iterations — ${r.skip_gates?"auto-stopping (--skip-gates)":"awaiting console input"}`}),De(e.nodes,l)):typeof console<"u"&&console.warn("[workflow-store] iteration_limit_reached event missing both agent_name and group_name",r)},iteration_limit_resolved:(e,t)=>{const r=t;e.iterationLimitGate=null;const l=r.agent_name??r.group_name;l?(qe(e.nodes,l).activity.push({type:"iteration_limit_resolved",icon:r.continue_execution?"▶":"■",label:"Iteration limit",text:r.aborted?"Gate aborted unexpectedly — stopping workflow":r.continue_execution?`Continuing with ${r.additional_iterations} more iteration(s)`:"Stopping workflow"}),De(e.nodes,l)):typeof console<"u"&&console.warn("[workflow-store] iteration_limit_resolved event missing both agent_name and group_name",r)},dialog_started:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_id=r.dialog_id,l.dialog_messages=[],l.dialog_active=!0,l.dialog_awaiting_response=!1,e.activeDialog={agentName:r.agent_name,dialogId:r.dialog_id},e.dialogEngaged=!1,De(e.nodes,r.agent_name)},dialog_message:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_messages||(l.dialog_messages=[]),l.dialog_messages.push({role:r.role,content:r.content}),r.role==="user"?l.dialog_awaiting_response=!0:r.role==="agent"&&(l.dialog_awaiting_response=!1),De(e.nodes,r.agent_name)},dialog_completed:(e,t)=>{const r=t,l=qe(e.nodes,r.agent_name);l.dialog_active=!1,l.dialog_awaiting_response=!1,e.activeDialog=null,e.dialogEngaged=!1,De(e.nodes,r.agent_name)}};function Du(e){var l,a;const t=e.timestamp,r=e.data;switch(e.type){case"workflow_started":return{timestamp:t,level:"info",source:"workflow",message:`Workflow "${r.name||""}" started`};case"agent_started":return{timestamp:t,level:"info",source:String(r.agent_name),message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Agent completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}${r.cost_usd!=null?` · $${r.cost_usd.toFixed(4)}`:""}`};case"agent_failed":return{timestamp:t,level:"error",source:String(r.agent_name),message:`Agent failed: ${r.message||r.error_type||"unknown error"}`};case"script_started":return{timestamp:t,level:"info",source:String(r.agent_name),message:"Script started"};case"script_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Script completed (exit ${r.exit_code??"?"})${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}`};case"script_failed":return{timestamp:t,level:"error",source:String(r.agent_name),message:`Script failed: ${r.message||r.error_type||"unknown error"}`};case"gate_presented":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Waiting for human input…"};case"gate_resolved":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Gate resolved → ${r.selected_option||"continue"}`};case"route_taken":return{timestamp:t,level:"debug",source:"router",message:`${r.from_agent} → ${r.to_agent}`};case"parallel_started":return{timestamp:t,level:"info",source:String(r.group_name),message:`Parallel group started (${((l=r.agents)==null?void 0:l.length)||"?"} agents)`};case"parallel_completed":return{timestamp:t,level:r.failure_count===0?"success":"error",source:String(r.group_name),message:`Parallel group completed${r.failure_count>0?` with ${r.failure_count} failure(s)`:""}`};case"for_each_started":return{timestamp:t,level:"info",source:String(r.group_name),message:`For-each started (${r.item_count} items)`};case"for_each_completed":return{timestamp:t,level:(r.failure_count??0)===0?"success":"error",source:String(r.group_name),message:`For-each completed · ${r.success_count} succeeded${r.failure_count>0?` · ${r.failure_count} failed`:""}`};case"workflow_completed":return{timestamp:t,level:"success",source:"workflow",message:`Workflow completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}`};case"workflow_failed":return{timestamp:t,level:"error",source:"workflow",message:`Workflow failed: ${r.message||r.error_type||"unknown error"}`};case"checkpoint_saved":return{timestamp:t,level:"info",source:"workflow",message:`Checkpoint saved: ${((a=r.path)==null?void 0:a.split("/").pop())||"unknown"}`};case"agent_paused":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Agent paused — waiting for resume"};case"agent_resumed":return{timestamp:t,level:"info",source:String(r.agent_name),message:"Agent resumed — re-executing"};case"iteration_limit_reached":{const o=r.agent_name??r.group_name??"workflow",u=r.skip_gates?" — auto-stopping (--skip-gates)":" — awaiting console input";return{timestamp:t,level:"warning",source:String(o),message:`Iteration limit reached (${r.current_iteration}/${r.max_iterations})${u}`}}case"iteration_limit_resolved":{const o=r.agent_name??r.group_name??"workflow",u=!!r.continue_execution,c=r.additional_iterations??0;return{timestamp:t,level:u?"info":"warning",source:String(o),message:u?`Iteration limit resolved — continuing with ${c} more`:"Iteration limit resolved — stopping workflow"}}case"dialog_started":return{timestamp:t,level:"warning",source:String(r.agent_name),message:"Dialog started — waiting for user…"};case"dialog_completed":return{timestamp:t,level:"success",source:String(r.agent_name),message:`Dialog completed (${r.turn_count||0} messages)`};default:return null}}function Qu(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const t=Math.floor(e/60),r=(e%60).toFixed(0);return`${t}m ${r}s`}function Ru(e){const t=e.timestamp,r=e.data;switch(e.type){case"agent_started":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Agent started${r.iteration!=null?` (iteration ${r.iteration})`:""}`};case"agent_prompt_rendered":return{timestamp:t,source:String(r.agent_name),type:"prompt",message:"Prompt rendered",detail:yo(String(r.rendered_prompt||""),500)};case"agent_reasoning":return{timestamp:t,source:String(r.agent_name),type:"reasoning",message:String(r.content||"")};case"agent_tool_start":return{timestamp:t,source:String(r.agent_name),type:"tool-start",message:`→ ${r.tool_name}`,detail:r.arguments?yo(String(r.arguments),300):null};case"agent_tool_complete":return{timestamp:t,source:String(r.agent_name),type:"tool-complete",message:`← ${r.tool_name||"done"}`,detail:r.result?yo(String(r.result),300):null};case"agent_turn_start":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Turn ${r.turn??"?"}`};case"agent_message":return{timestamp:t,source:String(r.agent_name),type:"message",message:yo(String(r.content||""),500)};case"agent_completed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Completed${r.elapsed!=null?` in ${Qu(r.elapsed)}`:""}${r.tokens!=null?` · ${r.tokens.toLocaleString()} tokens`:""}`};case"agent_failed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Failed: ${r.message||r.error_type||"unknown"}`};case"script_started":return{timestamp:t,source:String(r.agent_name),type:"turn",message:"Script started"};case"script_completed":return{timestamp:t,source:String(r.agent_name),type:"tool-complete",message:`Script completed (exit ${r.exit_code??"?"})`,detail:r.stdout?yo(String(r.stdout),300):null};case"script_failed":return{timestamp:t,source:String(r.agent_name),type:"turn",message:`Script failed: ${r.message||r.error_type||"unknown"}`};default:return null}}function yo(e,t){return e.length<=t?e:e.slice(0,t)+"…"}function nv(e){const t=e.match(/^(\s*)/);return t?t[1].length:0}function MN(e){const t=new Map;for(let r=0;ra)o=u;else break}o>r&&t.set(r,o)}return t}function DN(e){if(/^\s*#/.test(e))return y.jsx("span",{className:"text-emerald-500/70",children:e});const t=e.match(/^(\s*)(- )?([a-zA-Z_][\w.-]*)(:\s*)(.*)/);if(t){const[,l,a,o,u,c]=t;return y.jsxs("span",{children:[l,a??"",y.jsx("span",{className:"text-sky-400",children:o}),y.jsx("span",{className:"text-[var(--text-muted)]",children:u}),rv(c??"")]})}const r=e.match(/^(\s*)(- )(.*)/);if(r){const[,l,a,o]=r;return y.jsxs("span",{children:[l,y.jsx("span",{className:"text-[var(--text-muted)]",children:a}),rv(o??"")]})}return y.jsx("span",{children:e})}function rv(e){if(!e)return"";const t=e.indexOf(" #"),r=t>=0?e.slice(0,t):e,l=t>=0?e.slice(t):"";let a=r;return/^(true|false|null|yes|no)$/i.test(r.trim())?a=y.jsx("span",{className:"text-amber-400",children:r}):/^\d+(\.\d+)?$/.test(r.trim())?a=y.jsx("span",{className:"text-amber-400",children:r}):/^["'].*["']$/.test(r.trim())?a=y.jsx("span",{className:"text-green-400",children:r}):(r.includes("|")||r.includes(">"))&&(a=y.jsx("span",{className:"text-[var(--text-secondary)]",children:r})),y.jsxs(y.Fragment,{children:[a,l&&y.jsx("span",{className:"text-emerald-500/70",children:l})]})}function RN({yaml:e,onClose:t}){const[r,l]=V.useState(new Set);V.useEffect(()=>{const d=h=>{h.key==="Escape"&&t()};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[t]);const a=V.useMemo(()=>e.split(` `),[e]),o=V.useMemo(()=>MN(a),[a]),u=V.useCallback(d=>{l(h=>{const m=new Set(h);return m.has(d)?m.delete(d):m.add(d),m})},[]),c=V.useMemo(()=>{const d=[];let h=-1;for(let m=0;my.jsxs("div",{className:"flex",children:[y.jsx("span",{className:"inline-flex items-center justify-center flex-shrink-0",style:{width:"1.25rem"},children:m?y.jsx("button",{onClick:()=>u(d),className:"text-[var(--text-muted)] hover:text-[var(--text)] p-0 leading-none",style:{background:"none",border:"none",cursor:"pointer"},children:p?y.jsx(Rr,{className:"w-3 h-3"}):y.jsx(il,{className:"w-3 h-3"})}):null}),y.jsxs("span",{className:"flex-1",children:[DN(h),p&&y.jsx("span",{className:"text-[var(--text-muted)] text-[11px] ml-2 px-1.5 py-0.5 rounded bg-[var(--surface-hover)] cursor-pointer",onClick:()=>u(d),children:"···"})]})]},d))})})]})]})}function ON(){const e=fe(S=>S.workflowName),t=fe(S=>S.workflowStatus),r=fe(S=>S.isPaused),l=fe(S=>S.workflowYaml),a=fe(S=>S.conductorVersion),[o,u]=V.useState(!1),[c,d]=V.useState(!1),[h,m]=V.useState(!1),[p,x]=V.useState(!1),b=t==="running"||t==="pending";V.useEffect(()=>{r||(u(!1),d(!1),m(!1))},[r]);const w=async()=>{u(!0);try{await fetch("/api/stop",{method:"POST"})}catch(S){console.error("Failed to stop agent:",S),u(!1)}},N=async()=>{d(!0);try{await fetch("/api/resume",{method:"POST"})}catch(S){console.error("Failed to resume agent:",S),d(!1)}},_=async()=>{m(!0);try{await fetch("/api/kill",{method:"POST"})}catch(S){console.error("Failed to kill workflow:",S),m(!1)}};return y.jsxs("header",{className:"flex items-center justify-between px-4 py-2 bg-[var(--surface)] border-b border-[var(--border)] flex-shrink-0",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx(pw,{className:"w-4 h-4 text-[var(--running)]"}),y.jsx("h1",{className:"text-sm font-semibold text-[var(--text)]",children:"Conductor"}),e&&y.jsxs("span",{className:"text-sm text-[var(--text-muted)] font-normal",children:["— ",e]})]}),y.jsxs("div",{className:"flex items-center gap-3",children:[r?y.jsxs(y.Fragment,{children:[y.jsxs("button",{onClick:N,disabled:c,className:`flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium rounded bg-emerald-500/10 text-emerald-400 border border-emerald-500/20 hover:bg-emerald-500/20 hover:border-emerald-500/30 @@ -312,7 +312,7 @@ Error generating stack: `+f.message+` `,` +`).split(` `)),m=h.reduce((p,x)=>p.concat(...x),[]);return[h,m]}return[[],[]]},[e]);return V.useEffect(()=>{const d=(t==null?void 0:t.target)??eb,h=(t==null?void 0:t.actInsideInputWithModifier)??!0;if(e!==null){const m=b=>{var _,S;if(a.current=b.ctrlKey||b.metaKey||b.shiftKey||b.altKey,(!a.current||a.current&&!h)&&AS(b))return!1;const N=nb(b.code,c);if(o.current.add(b[N]),tb(u,o.current,!1)){const E=((S=(_=b.composedPath)==null?void 0:_.call(b))==null?void 0:S[0])||b.target,k=(E==null?void 0:E.nodeName)==="BUTTON"||(E==null?void 0:E.nodeName)==="A";t.preventDefault!==!1&&(a.current||!k)&&b.preventDefault(),l(!0)}},p=b=>{const w=nb(b.code,c);tb(u,o.current,!0)?(l(!1),o.current.clear()):o.current.delete(b[w]),b.key==="Meta"&&o.current.clear(),a.current=!1},x=()=>{o.current.clear(),l(!1)};return d==null||d.addEventListener("keydown",m),d==null||d.addEventListener("keyup",p),window.addEventListener("blur",x),window.addEventListener("contextmenu",x),()=>{d==null||d.removeEventListener("keydown",m),d==null||d.removeEventListener("keyup",p),window.removeEventListener("blur",x),window.removeEventListener("contextmenu",x)}}},[e,l]),r}function tb(e,t,r){return e.filter(l=>r||l.length===t.size).some(l=>l.every(a=>t.has(a)))}function nb(e,t){return t.includes(e)?"code":"key"}const kz=()=>{const e=mt();return V.useMemo(()=>({zoomIn:t=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomOut:t=>{const{panZoom:r}=e.getState();return r?r.scaleBy(1/1.2,{duration:t==null?void 0:t.duration}):Promise.resolve(!1)},zoomTo:(t,r)=>{const{panZoom:l}=e.getState();return l?l.scaleTo(t,{duration:r==null?void 0:r.duration}):Promise.resolve(!1)},getZoom:()=>e.getState().transform[2],setViewport:async(t,r)=>{const{transform:[l,a,o],panZoom:u}=e.getState();return u?(await u.setViewport({x:t.x??l,y:t.y??a,zoom:t.zoom??o},r),Promise.resolve(!0)):Promise.resolve(!1)},getViewport:()=>{const[t,r,l]=e.getState().transform;return{x:t,y:r,zoom:l}},setCenter:async(t,r,l)=>e.getState().setCenter(t,r,l),fitBounds:async(t,r)=>{const{width:l,height:a,minZoom:o,maxZoom:u,panZoom:c}=e.getState(),d=zm(t,l,a,o,u,(r==null?void 0:r.padding)??.1);return c?(await c.setViewport(d,{duration:r==null?void 0:r.duration,ease:r==null?void 0:r.ease,interpolate:r==null?void 0:r.interpolate}),Promise.resolve(!0)):Promise.resolve(!1)},screenToFlowPosition:(t,r={})=>{const{transform:l,snapGrid:a,snapToGrid:o,domNode:u}=e.getState();if(!u)return t;const{x:c,y:d}=u.getBoundingClientRect(),h={x:t.x-c,y:t.y-d},m=r.snapGrid??a,p=r.snapToGrid??o;return ns(h,l,p,m)},flowToScreenPosition:t=>{const{transform:r,domNode:l}=e.getState();if(!l)return t;const{x:a,y:o}=l.getBoundingClientRect(),u=mc(t,r);return{x:u.x+a,y:u.y+o}}}),[])};function KS(e,t){const r=[],l=new Map,a=[];for(const o of e)if(o.type==="add"){a.push(o);continue}else if(o.type==="remove"||o.type==="replace")l.set(o.id,[o]);else{const u=l.get(o.id);u?u.push(o):l.set(o.id,[o])}for(const o of t){const u=l.get(o.id);if(!u){r.push(o);continue}if(u[0].type==="remove")continue;if(u[0].type==="replace"){r.push({...u[0].item});continue}const c={...o};for(const d of u)Ez(d,c);r.push(c)}return a.length&&a.forEach(o=>{o.index!==void 0?r.splice(o.index,0,{...o.item}):r.push({...o.item})}),r}function Ez(e,t){switch(e.type){case"select":{t.selected=e.selected;break}case"position":{typeof e.position<"u"&&(t.position=e.position),typeof e.dragging<"u"&&(t.dragging=e.dragging);break}case"dimensions":{typeof e.dimensions<"u"&&(t.measured={...e.dimensions},e.setAttributes&&((e.setAttributes===!0||e.setAttributes==="width")&&(t.width=e.dimensions.width),(e.setAttributes===!0||e.setAttributes==="height")&&(t.height=e.dimensions.height))),typeof e.resizing=="boolean"&&(t.resizing=e.resizing);break}}}function JS(e,t){return KS(e,t)}function WS(e,t){return KS(e,t)}function Pi(e,t){return{id:e,type:"select",selected:t}}function ia(e,t=new Set,r=!1){const l=[];for(const[a,o]of e){const u=t.has(a);!(o.selected===void 0&&!u)&&o.selected!==u&&(r&&(o.selected=u),l.push(Pi(o.id,u)))}return l}function rb({items:e=[],lookup:t}){var a;const r=[],l=new Map(e.map(o=>[o.id,o]));for(const[o,u]of e.entries()){const c=t.get(u.id),d=((a=c==null?void 0:c.internals)==null?void 0:a.userNode)??c;d!==void 0&&d!==u&&r.push({id:u.id,item:u,type:"replace"}),d===void 0&&r.push({item:u,type:"add",index:o})}for(const[o]of t)l.get(o)===void 0&&r.push({id:o,type:"remove"});return r}function ib(e){return{id:e.id,type:"remove"}}const lb=e=>Xj(e),Nz=e=>SS(e);function e_(e){return V.forwardRef(e)}const Cz=typeof window<"u"?V.useLayoutEffect:V.useEffect;function ab(e){const[t,r]=V.useState(BigInt(0)),[l]=V.useState(()=>Tz(()=>r(a=>a+BigInt(1))));return Cz(()=>{const a=l.get();a.length&&(e(a),l.reset())},[t]),l}function Tz(e){let t=[];return{get:()=>t,reset:()=>{t=[]},push:r=>{t.push(r),e()}}}const t_=V.createContext(null);function jz({children:e}){const t=mt(),r=V.useCallback(c=>{const{nodes:d=[],setNodes:h,hasDefaultNodes:m,onNodesChange:p,nodeLookup:x,fitViewQueued:b,onNodesChangeMiddlewareMap:w}=t.getState();let N=d;for(const S of c)N=typeof S=="function"?S(N):S;let _=rb({items:N,lookup:x});for(const S of w.values())_=S(_);m&&h(N),_.length>0?p==null||p(_):b&&window.requestAnimationFrame(()=>{const{fitViewQueued:S,nodes:E,setNodes:k}=t.getState();S&&k(E)})},[]),l=ab(r),a=V.useCallback(c=>{const{edges:d=[],setEdges:h,hasDefaultEdges:m,onEdgesChange:p,edgeLookup:x}=t.getState();let b=d;for(const w of c)b=typeof w=="function"?w(b):w;m?h(b):p&&p(rb({items:b,lookup:x}))},[]),o=ab(a),u=V.useMemo(()=>({nodeQueue:l,edgeQueue:o}),[]);return y.jsx(t_.Provider,{value:u,children:e})}function Az(){const e=V.useContext(t_);if(!e)throw new Error("useBatchContext must be used within a BatchProvider");return e}const zz=e=>!!e.panZoom;function al(){const e=kz(),t=mt(),r=Az(),l=Ye(zz),a=V.useMemo(()=>{const o=p=>t.getState().nodeLookup.get(p),u=p=>{r.nodeQueue.push(p)},c=p=>{r.edgeQueue.push(p)},d=p=>{var S,E;const{nodeLookup:x,nodeOrigin:b}=t.getState(),w=lb(p)?p:x.get(p.id),N=w.parentId?TS(w.position,w.measured,w.parentId,x,b):w.position,_={...w,position:N,width:((S=w.measured)==null?void 0:S.width)??w.width,height:((E=w.measured)==null?void 0:E.height)??w.height};return ma(_)},h=(p,x,b={replace:!1})=>{u(w=>w.map(N=>{if(N.id===p){const _=typeof x=="function"?x(N):x;return b.replace&&lb(_)?_:{...N,..._}}return N}))},m=(p,x,b={replace:!1})=>{c(w=>w.map(N=>{if(N.id===p){const _=typeof x=="function"?x(N):x;return b.replace&&Nz(_)?_:{...N,..._}}return N}))};return{getNodes:()=>t.getState().nodes.map(p=>({...p})),getNode:p=>{var x;return(x=o(p))==null?void 0:x.internals.userNode},getInternalNode:o,getEdges:()=>{const{edges:p=[]}=t.getState();return p.map(x=>({...x}))},getEdge:p=>t.getState().edgeLookup.get(p),setNodes:u,setEdges:c,addNodes:p=>{const x=Array.isArray(p)?p:[p];r.nodeQueue.push(b=>[...b,...x])},addEdges:p=>{const x=Array.isArray(p)?p:[p];r.edgeQueue.push(b=>[...b,...x])},toObject:()=>{const{nodes:p=[],edges:x=[],transform:b}=t.getState(),[w,N,_]=b;return{nodes:p.map(S=>({...S})),edges:x.map(S=>({...S})),viewport:{x:w,y:N,zoom:_}}},deleteElements:async({nodes:p=[],edges:x=[]})=>{const{nodes:b,edges:w,onNodesDelete:N,onEdgesDelete:_,triggerNodeChanges:S,triggerEdgeChanges:E,onDelete:k,onBeforeDelete:A}=t.getState(),{nodes:M,edges:j}=await Wj({nodesToRemove:p,edgesToRemove:x,nodes:b,edges:w,onBeforeDelete:A}),L=j.length>0,R=M.length>0;if(L){const $=j.map(ib);_==null||_(j),E($)}if(R){const $=M.map(ib);N==null||N(M),S($)}return(R||L)&&(k==null||k({nodes:M,edges:j})),{deletedNodes:M,deletedEdges:j}},getIntersectingNodes:(p,x=!0,b)=>{const w=zv(p),N=w?p:d(p),_=b!==void 0;return N?(b||t.getState().nodes).filter(S=>{const E=t.getState().nodeLookup.get(S.id);if(E&&!w&&(S.id===p.id||!E.internals.positionAbsolute))return!1;const k=ma(_?S:E),A=Po(k,N);return x&&A>0||A>=k.width*k.height||A>=N.width*N.height}):[]},isNodeIntersecting:(p,x,b=!0)=>{const N=zv(p)?p:d(p);if(!N)return!1;const _=Po(N,x);return b&&_>0||_>=x.width*x.height||_>=N.width*N.height},updateNode:h,updateNodeData:(p,x,b={replace:!1})=>{h(p,w=>{const N=typeof x=="function"?x(w):x;return b.replace?{...w,data:N}:{...w,data:{...w.data,...N}}},b)},updateEdge:m,updateEdgeData:(p,x,b={replace:!1})=>{m(p,w=>{const N=typeof x=="function"?x(w):x;return b.replace?{...w,data:N}:{...w,data:{...w.data,...N}}},b)},getNodesBounds:p=>{const{nodeLookup:x,nodeOrigin:b}=t.getState();return Qj(p,{nodeLookup:x,nodeOrigin:b})},getHandleConnections:({type:p,id:x,nodeId:b})=>{var w;return Array.from(((w=t.getState().connectionLookup.get(`${b}-${p}${x?`-${x}`:""}`))==null?void 0:w.values())??[])},getNodeConnections:({type:p,handleId:x,nodeId:b})=>{var w;return Array.from(((w=t.getState().connectionLookup.get(`${b}${p?x?`-${p}-${x}`:`-${p}`:""}`))==null?void 0:w.values())??[])},fitView:async p=>{const x=t.getState().fitViewResolver??rA();return t.setState({fitViewQueued:!0,fitViewOptions:p,fitViewResolver:x}),r.nodeQueue.push(b=>[...b]),x.promise}}},[]);return V.useMemo(()=>({...a,...e,viewportInitialized:l}),[l])}const ob=e=>e.selected,Mz=typeof window<"u"?window:void 0;function Dz({deleteKeyCode:e,multiSelectionKeyCode:t}){const r=mt(),{deleteElements:l}=al(),a=Fo(e,{actInsideInputWithModifier:!1}),o=Fo(t,{target:Mz});V.useEffect(()=>{if(a){const{edges:u,nodes:c}=r.getState();l({nodes:c.filter(ob),edges:u.filter(ob)}),r.setState({nodesSelectionActive:!1})}},[a]),V.useEffect(()=>{r.setState({multiSelectionActive:o})},[o])}function Rz(e){const t=mt();V.useEffect(()=>{const r=()=>{var a,o,u,c;if(!e.current||!(((o=(a=e.current).checkVisibility)==null?void 0:o.call(a))??!0))return!1;const l=Mm(e.current);(l.height===0||l.width===0)&&((c=(u=t.getState()).onError)==null||c.call(u,"004",lr.error004())),t.setState({width:l.width||500,height:l.height||500})};if(e.current){r(),window.addEventListener("resize",r);const l=new ResizeObserver(()=>r());return l.observe(e.current),()=>{window.removeEventListener("resize",r),l&&e.current&&l.unobserve(e.current)}}},[])}const Hc={position:"absolute",width:"100%",height:"100%",top:0,left:0},Oz=e=>({userSelectionActive:e.userSelectionActive,lib:e.lib,connectionInProgress:e.connection.inProgress});function Lz({onPaneContextMenu:e,zoomOnScroll:t=!0,zoomOnPinch:r=!0,panOnScroll:l=!1,panOnScrollSpeed:a=.5,panOnScrollMode:o=Zi.Free,zoomOnDoubleClick:u=!0,panOnDrag:c=!0,defaultViewport:d,translateExtent:h,minZoom:m,maxZoom:p,zoomActivationKeyCode:x,preventScrolling:b=!0,children:w,noWheelClassName:N,noPanClassName:_,onViewportChange:S,isControlledViewport:E,paneClickDistance:k,selectionOnDrag:A}){const M=mt(),j=V.useRef(null),{userSelectionActive:L,lib:R,connectionInProgress:$}=Ye(Oz,pt),H=Fo(x),B=V.useRef();Rz(j);const U=V.useCallback(ee=>{S==null||S({x:ee[0],y:ee[1],zoom:ee[2]}),E||M.setState({transform:ee})},[S,E]);return V.useEffect(()=>{if(j.current){B.current=qA({domNode:j.current,minZoom:m,maxZoom:p,translateExtent:h,viewport:d,onDraggingChange:z=>M.setState(G=>G.paneDragging===z?G:{paneDragging:z}),onPanZoomStart:(z,G)=>{const{onViewportChangeStart:Q,onMoveStart:K}=M.getState();K==null||K(z,G),Q==null||Q(G)},onPanZoom:(z,G)=>{const{onViewportChange:Q,onMove:K}=M.getState();K==null||K(z,G),Q==null||Q(G)},onPanZoomEnd:(z,G)=>{const{onViewportChangeEnd:Q,onMoveEnd:K}=M.getState();K==null||K(z,G),Q==null||Q(G)}});const{x:ee,y:I,zoom:F}=B.current.getViewport();return M.setState({panZoom:B.current,transform:[ee,I,F],domNode:j.current.closest(".react-flow")}),()=>{var z;(z=B.current)==null||z.destroy()}}},[]),V.useEffect(()=>{var ee;(ee=B.current)==null||ee.update({onPaneContextMenu:e,zoomOnScroll:t,zoomOnPinch:r,panOnScroll:l,panOnScrollSpeed:a,panOnScrollMode:o,zoomOnDoubleClick:u,panOnDrag:c,zoomActivationKeyPressed:H,preventScrolling:b,noPanClassName:_,userSelectionActive:L,noWheelClassName:N,lib:R,onTransformChange:U,connectionInProgress:$,selectionOnDrag:A,paneClickDistance:k})},[e,t,r,l,a,o,u,c,H,b,_,L,N,R,U,$,A,k]),y.jsx("div",{className:"react-flow__renderer",ref:j,style:Hc,children:w})}const Hz=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Bz(){const{userSelectionActive:e,userSelectionRect:t}=Ye(Hz,pt);return e&&t?y.jsx("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}const Ch=(e,t)=>r=>{r.target===t.current&&(e==null||e(r))},Iz=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,connectionInProgress:e.connection.inProgress,dragging:e.paneDragging});function qz({isSelecting:e,selectionKeyPressed:t,selectionMode:r=Vo.Full,panOnDrag:l,paneClickDistance:a,selectionOnDrag:o,onSelectionStart:u,onSelectionEnd:c,onPaneClick:d,onPaneContextMenu:h,onPaneScroll:m,onPaneMouseEnter:p,onPaneMouseMove:x,onPaneMouseLeave:b,children:w}){const N=mt(),{userSelectionActive:_,elementsSelectable:S,dragging:E,connectionInProgress:k}=Ye(Iz,pt),A=S&&(e||_),M=V.useRef(null),j=V.useRef(),L=V.useRef(new Set),R=V.useRef(new Set),$=V.useRef(!1),H=Q=>{if($.current||k){$.current=!1;return}d==null||d(Q),N.getState().resetSelectedElements(),N.setState({nodesSelectionActive:!1})},B=Q=>{if(Array.isArray(l)&&(l!=null&&l.includes(2))){Q.preventDefault();return}h==null||h(Q)},U=m?Q=>m(Q):void 0,ee=Q=>{$.current&&(Q.stopPropagation(),$.current=!1)},I=Q=>{var X,J;const{domNode:K}=N.getState();if(j.current=K==null?void 0:K.getBoundingClientRect(),!j.current)return;const D=Q.target===M.current;if(!D&&!!Q.target.closest(".nokey")||!e||!(o&&D||t)||Q.button!==0||!Q.isPrimary)return;(J=(X=Q.target)==null?void 0:X.setPointerCapture)==null||J.call(X,Q.pointerId),$.current=!1;const{x:C,y:P}=Vn(Q.nativeEvent,j.current);N.setState({userSelectionRect:{width:0,height:0,startX:C,startY:P,x:C,y:P}}),D||(Q.stopPropagation(),Q.preventDefault())},F=Q=>{const{userSelectionRect:K,transform:D,nodeLookup:q,edgeLookup:Y,connectionLookup:C,triggerNodeChanges:P,triggerEdgeChanges:X,defaultEdgeOptions:J,resetSelectedElements:ne}=N.getState();if(!j.current||!K)return;const{x:re,y:se}=Vn(Q.nativeEvent,j.current),{startX:xe,startY:be}=K;if(!$.current){const Te=t?0:a;if(Math.hypot(re-xe,se-be)<=Te)return;ne(),u==null||u(Q)}$.current=!0;const ye={startX:xe,startY:be,x:reTe.id)),R.current=new Set;const ze=(J==null?void 0:J.selectable)??!0;for(const Te of L.current){const ut=C.get(Te);if(ut)for(const{edgeId:nt}of ut.values()){const zt=Y.get(nt);zt&&(zt.selectable??ze)&&R.current.add(nt)}}if(!Mv(pe,L.current)){const Te=ia(q,L.current,!0);P(Te)}if(!Mv(_e,R.current)){const Te=ia(Y,R.current);X(Te)}N.setState({userSelectionRect:ye,userSelectionActive:!0,nodesSelectionActive:!1})},z=Q=>{var K,D;Q.button===0&&((D=(K=Q.target)==null?void 0:K.releasePointerCapture)==null||D.call(K,Q.pointerId),!_&&Q.target===M.current&&N.getState().userSelectionRect&&(H==null||H(Q)),N.setState({userSelectionActive:!1,userSelectionRect:null}),$.current&&(c==null||c(Q),N.setState({nodesSelectionActive:L.current.size>0})))},G=l===!0||Array.isArray(l)&&l.includes(0);return y.jsxs("div",{className:At(["react-flow__pane",{draggable:G,dragging:E,selection:e}]),onClick:A?void 0:Ch(H,M),onContextMenu:Ch(B,M),onWheel:Ch(U,M),onPointerEnter:A?void 0:p,onPointerMove:A?F:x,onPointerUp:A?z:void 0,onPointerDownCapture:A?I:void 0,onClickCapture:A?ee:void 0,onPointerLeave:b,ref:M,style:Hc,children:[w,y.jsx(Bz,{})]})}function rm({id:e,store:t,unselect:r=!1,nodeRef:l}){const{addSelectedNodes:a,unselectNodesAndEdges:o,multiSelectionActive:u,nodeLookup:c,onError:d}=t.getState(),h=c.get(e);if(!h){d==null||d("012",lr.error012(e));return}t.setState({nodesSelectionActive:!1}),h.selected?(r||h.selected&&u)&&(o({nodes:[h],edges:[]}),requestAnimationFrame(()=>{var m;return(m=l==null?void 0:l.current)==null?void 0:m.blur()})):a([e])}function n_({nodeRef:e,disabled:t=!1,noDragClassName:r,handleSelector:l,nodeId:a,isSelectable:o,nodeClickDistance:u}){const c=mt(),[d,h]=V.useState(!1),m=V.useRef();return V.useEffect(()=>{m.current=NA({getStoreItems:()=>c.getState(),onNodeMouseDown:p=>{rm({id:p,store:c,nodeRef:e})},onDragStart:()=>{h(!0)},onDragStop:()=>{h(!1)}})},[]),V.useEffect(()=>{if(!(t||!e.current||!m.current))return m.current.update({noDragClassName:r,handleSelector:l,domNode:e.current,isSelectable:o,nodeId:a,nodeClickDistance:u}),()=>{var p;(p=m.current)==null||p.destroy()}},[r,l,t,o,e,a,u]),d}const Uz=e=>t=>t.selected&&(t.draggable||e&&typeof t.draggable>"u");function r_(){const e=mt();return V.useCallback(r=>{const{nodeExtent:l,snapToGrid:a,snapGrid:o,nodesDraggable:u,onError:c,updateNodePositions:d,nodeLookup:h,nodeOrigin:m}=e.getState(),p=new Map,x=Uz(u),b=a?o[0]:5,w=a?o[1]:5,N=r.direction.x*b*r.factor,_=r.direction.y*w*r.factor;for(const[,S]of h){if(!x(S))continue;let E={x:S.internals.positionAbsolute.x+N,y:S.internals.positionAbsolute.y+_};a&&(E=ts(E,o));const{position:k,positionAbsolute:A}=_S({nodeId:S.id,nextPosition:E,nodeLookup:h,nodeExtent:l,nodeOrigin:m,onError:c});S.position=k,S.internals.positionAbsolute=A,p.set(S.id,S)}d(p)},[])}const Im=V.createContext(null),$z=Im.Provider;Im.Consumer;const i_=()=>V.useContext(Im),Vz=e=>({connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName,rfId:e.rfId}),Pz=(e,t,r)=>l=>{const{connectionClickStartHandle:a,connectionMode:o,connection:u}=l,{fromHandle:c,toHandle:d,isValid:h}=u,m=(d==null?void 0:d.nodeId)===e&&(d==null?void 0:d.id)===t&&(d==null?void 0:d.type)===r;return{connectingFrom:(c==null?void 0:c.nodeId)===e&&(c==null?void 0:c.id)===t&&(c==null?void 0:c.type)===r,connectingTo:m,clickConnecting:(a==null?void 0:a.nodeId)===e&&(a==null?void 0:a.id)===t&&(a==null?void 0:a.type)===r,isPossibleEndHandle:o===ha.Strict?(c==null?void 0:c.type)!==r:e!==(c==null?void 0:c.nodeId)||t!==(c==null?void 0:c.id),connectionInProcess:!!c,clickConnectionInProcess:!!a,valid:m&&h}};function Gz({type:e="source",position:t=ve.Top,isValidConnection:r,isConnectable:l=!0,isConnectableStart:a=!0,isConnectableEnd:o=!0,id:u,onConnect:c,children:d,className:h,onMouseDown:m,onTouchStart:p,...x},b){var F,z;const w=u||null,N=e==="target",_=mt(),S=i_(),{connectOnClick:E,noPanClassName:k,rfId:A}=Ye(Vz,pt),{connectingFrom:M,connectingTo:j,clickConnecting:L,isPossibleEndHandle:R,connectionInProcess:$,clickConnectionInProcess:H,valid:B}=Ye(Pz(S,w,e),pt);S||(z=(F=_.getState()).onError)==null||z.call(F,"010",lr.error010());const U=G=>{const{defaultEdgeOptions:Q,onConnect:K,hasDefaultEdges:D}=_.getState(),q={...Q,...G};if(D){const{edges:Y,setEdges:C}=_.getState();C(cA(q,Y))}K==null||K(q),c==null||c(q)},ee=G=>{if(!S)return;const Q=zS(G.nativeEvent);if(a&&(Q&&G.button===0||!Q)){const K=_.getState();nm.onPointerDown(G.nativeEvent,{handleDomNode:G.currentTarget,autoPanOnConnect:K.autoPanOnConnect,connectionMode:K.connectionMode,connectionRadius:K.connectionRadius,domNode:K.domNode,nodeLookup:K.nodeLookup,lib:K.lib,isTarget:N,handleId:w,nodeId:S,flowId:K.rfId,panBy:K.panBy,cancelConnection:K.cancelConnection,onConnectStart:K.onConnectStart,onConnectEnd:(...D)=>{var q,Y;return(Y=(q=_.getState()).onConnectEnd)==null?void 0:Y.call(q,...D)},updateConnection:K.updateConnection,onConnect:U,isValidConnection:r||((...D)=>{var q,Y;return((Y=(q=_.getState()).isValidConnection)==null?void 0:Y.call(q,...D))??!0}),getTransform:()=>_.getState().transform,getFromHandle:()=>_.getState().connection.fromHandle,autoPanSpeed:K.autoPanSpeed,dragThreshold:K.connectionDragThreshold})}Q?m==null||m(G):p==null||p(G)},I=G=>{const{onClickConnectStart:Q,onClickConnectEnd:K,connectionClickStartHandle:D,connectionMode:q,isValidConnection:Y,lib:C,rfId:P,nodeLookup:X,connection:J}=_.getState();if(!S||!D&&!a)return;if(!D){Q==null||Q(G.nativeEvent,{nodeId:S,handleId:w,handleType:e}),_.setState({connectionClickStartHandle:{nodeId:S,type:e,id:w}});return}const ne=jS(G.target),re=r||Y,{connection:se,isValid:xe}=nm.isValid(G.nativeEvent,{handle:{nodeId:S,id:w,type:e},connectionMode:q,fromNodeId:D.nodeId,fromHandleId:D.id||null,fromType:D.type,isValidConnection:re,flowId:P,doc:ne,lib:C,nodeLookup:X});xe&&se&&U(se);const be=structuredClone(J);delete be.inProgress,be.toPosition=be.toHandle?be.toHandle.position:null,K==null||K(G,be),_.setState({connectionClickStartHandle:null})};return y.jsx("div",{"data-handleid":w,"data-nodeid":S,"data-handlepos":t,"data-id":`${A}-${S}-${w}-${e}`,className:At(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",k,h,{source:!N,target:N,connectable:l,connectablestart:a,connectableend:o,clickconnecting:L,connectingfrom:M,connectingto:j,valid:B,connectionindicator:l&&(!$||R)&&($||H?o:a)}]),onMouseDown:ee,onTouchStart:ee,onClick:E?I:void 0,ref:b,...x,children:d})}const Lt=V.memo(e_(Gz));function Fz({data:e,isConnectable:t,sourcePosition:r=ve.Bottom}){return y.jsxs(y.Fragment,{children:[e==null?void 0:e.label,y.jsx(Lt,{type:"source",position:r,isConnectable:t})]})}function Yz({data:e,isConnectable:t,targetPosition:r=ve.Top,sourcePosition:l=ve.Bottom}){return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:r,isConnectable:t}),e==null?void 0:e.label,y.jsx(Lt,{type:"source",position:l,isConnectable:t})]})}function Xz(){return null}function Qz({data:e,isConnectable:t,targetPosition:r=ve.Top}){return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:r,isConnectable:t}),e==null?void 0:e.label]})}const gc={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}},sb={input:Fz,default:Yz,output:Qz,group:Xz};function Zz(e){var t,r,l,a;return e.internals.handleBounds===void 0?{width:e.width??e.initialWidth??((t=e.style)==null?void 0:t.width),height:e.height??e.initialHeight??((r=e.style)==null?void 0:r.height)}:{width:e.width??((l=e.style)==null?void 0:l.width),height:e.height??((a=e.style)==null?void 0:a.height)}}const Kz=e=>{const{width:t,height:r,x:l,y:a}=es(e.nodeLookup,{filter:o=>!!o.selected});return{width:$n(t)?t:null,height:$n(r)?r:null,userSelectionActive:e.userSelectionActive,transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]}) translate(${l}px,${a}px)`}};function Jz({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:r}){const l=mt(),{width:a,height:o,transformString:u,userSelectionActive:c}=Ye(Kz,pt),d=r_(),h=V.useRef(null);V.useEffect(()=>{var b;r||(b=h.current)==null||b.focus({preventScroll:!0})},[r]);const m=!c&&a!==null&&o!==null;if(n_({nodeRef:h,disabled:!m}),!m)return null;const p=e?b=>{const w=l.getState().nodes.filter(N=>N.selected);e(b,w)}:void 0,x=b=>{Object.prototype.hasOwnProperty.call(gc,b.key)&&(b.preventDefault(),d({direction:gc[b.key],factor:b.shiftKey?4:1}))};return y.jsx("div",{className:At(["react-flow__nodesselection","react-flow__container",t]),style:{transform:u},children:y.jsx("div",{ref:h,className:"react-flow__nodesselection-rect",onContextMenu:p,tabIndex:r?void 0:-1,onKeyDown:r?void 0:x,style:{width:a,height:o}})})}const ub=typeof window<"u"?window:void 0,Wz=e=>({nodesSelectionActive:e.nodesSelectionActive,userSelectionActive:e.userSelectionActive});function l_({children:e,onPaneClick:t,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:o,onPaneScroll:u,paneClickDistance:c,deleteKeyCode:d,selectionKeyCode:h,selectionOnDrag:m,selectionMode:p,onSelectionStart:x,onSelectionEnd:b,multiSelectionKeyCode:w,panActivationKeyCode:N,zoomActivationKeyCode:_,elementsSelectable:S,zoomOnScroll:E,zoomOnPinch:k,panOnScroll:A,panOnScrollSpeed:M,panOnScrollMode:j,zoomOnDoubleClick:L,panOnDrag:R,defaultViewport:$,translateExtent:H,minZoom:B,maxZoom:U,preventScrolling:ee,onSelectionContextMenu:I,noWheelClassName:F,noPanClassName:z,disableKeyboardA11y:G,onViewportChange:Q,isControlledViewport:K}){const{nodesSelectionActive:D,userSelectionActive:q}=Ye(Wz,pt),Y=Fo(h,{target:ub}),C=Fo(N,{target:ub}),P=C||R,X=C||A,J=m&&P!==!0,ne=Y||q||J;return Dz({deleteKeyCode:d,multiSelectionKeyCode:w}),y.jsx(Lz,{onPaneContextMenu:o,elementsSelectable:S,zoomOnScroll:E,zoomOnPinch:k,panOnScroll:X,panOnScrollSpeed:M,panOnScrollMode:j,zoomOnDoubleClick:L,panOnDrag:!Y&&P,defaultViewport:$,translateExtent:H,minZoom:B,maxZoom:U,zoomActivationKeyCode:_,preventScrolling:ee,noWheelClassName:F,noPanClassName:z,onViewportChange:Q,isControlledViewport:K,paneClickDistance:c,selectionOnDrag:J,children:y.jsxs(qz,{onSelectionStart:x,onSelectionEnd:b,onPaneClick:t,onPaneMouseEnter:r,onPaneMouseMove:l,onPaneMouseLeave:a,onPaneContextMenu:o,onPaneScroll:u,panOnDrag:P,isSelecting:!!ne,selectionMode:p,selectionKeyPressed:Y,paneClickDistance:c,selectionOnDrag:J,children:[e,D&&y.jsx(Jz,{onSelectionContextMenu:I,noPanClassName:z,disableKeyboardA11y:G})]})})}l_.displayName="FlowRenderer";const eM=V.memo(l_),tM=e=>t=>e?Am(t.nodeLookup,{x:0,y:0,width:t.width,height:t.height},t.transform,!0).map(r=>r.id):Array.from(t.nodeLookup.keys());function nM(e){return Ye(V.useCallback(tM(e),[e]),pt)}const rM=e=>e.updateNodeInternals;function iM(){const e=Ye(rM),[t]=V.useState(()=>typeof ResizeObserver>"u"?null:new ResizeObserver(r=>{const l=new Map;r.forEach(a=>{const o=a.target.getAttribute("data-id");l.set(o,{id:o,nodeElement:a.target,force:!0})}),e(l)}));return V.useEffect(()=>()=>{t==null||t.disconnect()},[t]),t}function lM({node:e,nodeType:t,hasDimensions:r,resizeObserver:l}){const a=mt(),o=V.useRef(null),u=V.useRef(null),c=V.useRef(e.sourcePosition),d=V.useRef(e.targetPosition),h=V.useRef(t),m=r&&!!e.internals.handleBounds;return V.useEffect(()=>{o.current&&!e.hidden&&(!m||u.current!==o.current)&&(u.current&&(l==null||l.unobserve(u.current)),l==null||l.observe(o.current),u.current=o.current)},[m,e.hidden]),V.useEffect(()=>()=>{u.current&&(l==null||l.unobserve(u.current),u.current=null)},[]),V.useEffect(()=>{if(o.current){const p=h.current!==t,x=c.current!==e.sourcePosition,b=d.current!==e.targetPosition;(p||x||b)&&(h.current=t,c.current=e.sourcePosition,d.current=e.targetPosition,a.getState().updateNodeInternals(new Map([[e.id,{id:e.id,nodeElement:o.current,force:!0}]])))}},[e.id,t,e.sourcePosition,e.targetPosition]),o}function aM({id:e,onClick:t,onMouseEnter:r,onMouseMove:l,onMouseLeave:a,onContextMenu:o,onDoubleClick:u,nodesDraggable:c,elementsSelectable:d,nodesConnectable:h,nodesFocusable:m,resizeObserver:p,noDragClassName:x,noPanClassName:b,disableKeyboardA11y:w,rfId:N,nodeTypes:_,nodeClickDistance:S,onError:E}){const{node:k,internals:A,isParent:M}=Ye(re=>{const se=re.nodeLookup.get(e),xe=re.parentLookup.has(e);return{node:se,internals:se.internals,isParent:xe}},pt);let j=k.type||"default",L=(_==null?void 0:_[j])||sb[j];L===void 0&&(E==null||E("003",lr.error003(j)),j="default",L=(_==null?void 0:_.default)||sb.default);const R=!!(k.draggable||c&&typeof k.draggable>"u"),$=!!(k.selectable||d&&typeof k.selectable>"u"),H=!!(k.connectable||h&&typeof k.connectable>"u"),B=!!(k.focusable||m&&typeof k.focusable>"u"),U=mt(),ee=CS(k),I=lM({node:k,nodeType:j,hasDimensions:ee,resizeObserver:p}),F=n_({nodeRef:I,disabled:k.hidden||!R,noDragClassName:x,handleSelector:k.dragHandle,nodeId:e,isSelectable:$,nodeClickDistance:S}),z=r_();if(k.hidden)return null;const G=Or(k),Q=Zz(k),K=$||R||t||r||l||a,D=r?re=>r(re,{...A.userNode}):void 0,q=l?re=>l(re,{...A.userNode}):void 0,Y=a?re=>a(re,{...A.userNode}):void 0,C=o?re=>o(re,{...A.userNode}):void 0,P=u?re=>u(re,{...A.userNode}):void 0,X=re=>{const{selectNodesOnDrag:se,nodeDragThreshold:xe}=U.getState();$&&(!se||!R||xe>0)&&rm({id:e,store:U,nodeRef:I}),t&&t(re,{...A.userNode})},J=re=>{if(!(AS(re.nativeEvent)||w)){if(yS.includes(re.key)&&$){const se=re.key==="Escape";rm({id:e,store:U,unselect:se,nodeRef:I})}else if(R&&k.selected&&Object.prototype.hasOwnProperty.call(gc,re.key)){re.preventDefault();const{ariaLabelConfig:se}=U.getState();U.setState({ariaLiveMessage:se["node.a11yDescription.ariaLiveMessage"]({direction:re.key.replace("Arrow","").toLowerCase(),x:~~A.positionAbsolute.x,y:~~A.positionAbsolute.y})}),z({direction:gc[re.key],factor:re.shiftKey?4:1})}}},ne=()=>{var _e;if(w||!((_e=I.current)!=null&&_e.matches(":focus-visible")))return;const{transform:re,width:se,height:xe,autoPanOnNodeFocus:be,setCenter:ye}=U.getState();if(!be)return;Am(new Map([[e,k]]),{x:0,y:0,width:se,height:xe},re,!0).length>0||ye(k.position.x+G.width/2,k.position.y+G.height/2,{zoom:re[2]})};return y.jsx("div",{className:At(["react-flow__node",`react-flow__node-${j}`,{[b]:R},k.className,{selected:k.selected,selectable:$,parent:M,draggable:R,dragging:F}]),ref:I,style:{zIndex:A.z,transform:`translate(${A.positionAbsolute.x}px,${A.positionAbsolute.y}px)`,pointerEvents:K?"all":"none",visibility:ee?"visible":"hidden",...k.style,...Q},"data-id":e,"data-testid":`rf__node-${e}`,onMouseEnter:D,onMouseMove:q,onMouseLeave:Y,onContextMenu:C,onClick:X,onDoubleClick:P,onKeyDown:B?J:void 0,tabIndex:B?0:void 0,onFocus:B?ne:void 0,role:k.ariaRole??(B?"group":void 0),"aria-roledescription":"node","aria-describedby":w?void 0:`${XS}-${N}`,"aria-label":k.ariaLabel,...k.domAttributes,children:y.jsx($z,{value:e,children:y.jsx(L,{id:e,data:k.data,type:j,positionAbsoluteX:A.positionAbsolute.x,positionAbsoluteY:A.positionAbsolute.y,selected:k.selected??!1,selectable:$,draggable:R,deletable:k.deletable??!0,isConnectable:H,sourcePosition:k.sourcePosition,targetPosition:k.targetPosition,dragging:F,dragHandle:k.dragHandle,zIndex:A.z,parentId:k.parentId,...G})})})}var oM=V.memo(aM);const sM=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,onError:e.onError});function a_(e){const{nodesDraggable:t,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,onError:o}=Ye(sM,pt),u=nM(e.onlyRenderVisibleElements),c=iM();return y.jsx("div",{className:"react-flow__nodes",style:Hc,children:u.map(d=>y.jsx(oM,{id:d,nodeTypes:e.nodeTypes,nodeExtent:e.nodeExtent,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,resizeObserver:c,nodesDraggable:t,nodesConnectable:r,nodesFocusable:l,elementsSelectable:a,nodeClickDistance:e.nodeClickDistance,onError:o},d))})}a_.displayName="NodeRenderer";const uM=V.memo(a_);function cM(e){return Ye(V.useCallback(r=>{if(!e)return r.edges.map(a=>a.id);const l=[];if(r.width&&r.height)for(const a of r.edges){const o=r.nodeLookup.get(a.source),u=r.nodeLookup.get(a.target);o&&u&&oA({sourceNode:o,targetNode:u,width:r.width,height:r.height,transform:r.transform})&&l.push(a.id)}return l},[e]),pt)}const fM=({color:e="none",strokeWidth:t=1})=>{const r={strokeWidth:t,...e&&{stroke:e}};return y.jsx("polyline",{className:"arrow",style:r,strokeLinecap:"round",fill:"none",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4"})},dM=({color:e="none",strokeWidth:t=1})=>{const r={strokeWidth:t,...e&&{stroke:e,fill:e}};return y.jsx("polyline",{className:"arrowclosed",style:r,strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"})},cb={[hc.Arrow]:fM,[hc.ArrowClosed]:dM};function hM(e){const t=mt();return V.useMemo(()=>{var a,o;return Object.prototype.hasOwnProperty.call(cb,e)?cb[e]:((o=(a=t.getState()).onError)==null||o.call(a,"009",lr.error009(e)),null)},[e])}const pM=({id:e,type:t,color:r,width:l=12.5,height:a=12.5,markerUnits:o="strokeWidth",strokeWidth:u,orient:c="auto-start-reverse"})=>{const d=hM(t);return d?y.jsx("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${l}`,markerHeight:`${a}`,viewBox:"-10 -10 20 20",markerUnits:o,orient:c,refX:"0",refY:"0",children:y.jsx(d,{color:r,strokeWidth:u})}):null},o_=({defaultColor:e,rfId:t})=>{const r=Ye(o=>o.edges),l=Ye(o=>o.defaultEdgeOptions),a=V.useMemo(()=>mA(r,{id:t,defaultColor:e,defaultMarkerStart:l==null?void 0:l.markerStart,defaultMarkerEnd:l==null?void 0:l.markerEnd}),[r,l,t,e]);return a.length?y.jsx("svg",{className:"react-flow__marker","aria-hidden":"true",children:y.jsx("defs",{children:a.map(o=>y.jsx(pM,{id:o.id,type:o.type,color:o.color,width:o.width,height:o.height,markerUnits:o.markerUnits,strokeWidth:o.strokeWidth,orient:o.orient},o.id))})}):null};o_.displayName="MarkerDefinitions";var mM=V.memo(o_);function s_({x:e,y:t,label:r,labelStyle:l,labelShowBg:a=!0,labelBgStyle:o,labelBgPadding:u=[2,4],labelBgBorderRadius:c=2,children:d,className:h,...m}){const[p,x]=V.useState({x:1,y:0,width:0,height:0}),b=At(["react-flow__edge-textwrapper",h]),w=V.useRef(null);return V.useEffect(()=>{if(w.current){const N=w.current.getBBox();x({x:N.x,y:N.y,width:N.width,height:N.height})}},[r]),r?y.jsxs("g",{transform:`translate(${e-p.width/2} ${t-p.height/2})`,className:b,visibility:p.width?"visible":"hidden",...m,children:[a&&y.jsx("rect",{width:p.width+2*u[0],x:-u[0],y:-u[1],height:p.height+2*u[1],className:"react-flow__edge-textbg",style:o,rx:c,ry:c}),y.jsx("text",{className:"react-flow__edge-text",y:p.height/2,dy:"0.3em",ref:w,style:l,children:r}),d]}):null}s_.displayName="EdgeText";const gM=V.memo(s_);function rs({path:e,labelX:t,labelY:r,label:l,labelStyle:a,labelShowBg:o,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d,interactionWidth:h=20,...m}){return y.jsxs(y.Fragment,{children:[y.jsx("path",{...m,d:e,fill:"none",className:At(["react-flow__edge-path",m.className])}),h?y.jsx("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}):null,l&&$n(t)&&$n(r)?y.jsx(gM,{x:t,y:r,label:l,labelStyle:a,labelShowBg:o,labelBgStyle:u,labelBgPadding:c,labelBgBorderRadius:d}):null]})}function fb({pos:e,x1:t,y1:r,x2:l,y2:a}){return e===ve.Left||e===ve.Right?[.5*(t+l),r]:[t,.5*(r+a)]}function u_({sourceX:e,sourceY:t,sourcePosition:r=ve.Bottom,targetX:l,targetY:a,targetPosition:o=ve.Top}){const[u,c]=fb({pos:r,x1:e,y1:t,x2:l,y2:a}),[d,h]=fb({pos:o,x1:l,y1:a,x2:e,y2:t}),[m,p,x,b]=MS({sourceX:e,sourceY:t,targetX:l,targetY:a,sourceControlX:u,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${e},${t} C${u},${c} ${d},${h} ${l},${a}`,m,p,x,b]}function c_(e){return V.memo(({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u,targetPosition:c,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:x,labelBgBorderRadius:b,style:w,markerEnd:N,markerStart:_,interactionWidth:S})=>{const[E,k,A]=u_({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:o,targetPosition:c}),M=e.isInternal?void 0:t;return y.jsx(rs,{id:M,path:E,labelX:k,labelY:A,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:x,labelBgBorderRadius:b,style:w,markerEnd:N,markerStart:_,interactionWidth:S})})}const xM=c_({isInternal:!1}),f_=c_({isInternal:!0});xM.displayName="SimpleBezierEdge";f_.displayName="SimpleBezierEdgeInternal";function d_(e){return V.memo(({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,label:u,labelStyle:c,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:x,sourcePosition:b=ve.Bottom,targetPosition:w=ve.Top,markerEnd:N,markerStart:_,pathOptions:S,interactionWidth:E})=>{const[k,A,M]=Wp({sourceX:r,sourceY:l,sourcePosition:b,targetX:a,targetY:o,targetPosition:w,borderRadius:S==null?void 0:S.borderRadius,offset:S==null?void 0:S.offset,stepPosition:S==null?void 0:S.stepPosition}),j=e.isInternal?void 0:t;return y.jsx(rs,{id:j,path:k,labelX:A,labelY:M,label:u,labelStyle:c,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:x,markerEnd:N,markerStart:_,interactionWidth:E})})}const h_=d_({isInternal:!1}),p_=d_({isInternal:!0});h_.displayName="SmoothStepEdge";p_.displayName="SmoothStepEdgeInternal";function m_(e){return V.memo(({id:t,...r})=>{var a;const l=e.isInternal?void 0:t;return y.jsx(h_,{...r,id:l,pathOptions:V.useMemo(()=>{var o;return{borderRadius:0,offset:(o=r.pathOptions)==null?void 0:o.offset}},[(a=r.pathOptions)==null?void 0:a.offset])})})}const yM=m_({isInternal:!1}),g_=m_({isInternal:!0});yM.displayName="StepEdge";g_.displayName="StepEdgeInternal";function x_(e){return V.memo(({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,label:u,labelStyle:c,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:x,markerEnd:b,markerStart:w,interactionWidth:N})=>{const[_,S,E]=RS({sourceX:r,sourceY:l,targetX:a,targetY:o}),k=e.isInternal?void 0:t;return y.jsx(rs,{id:k,path:_,labelX:S,labelY:E,label:u,labelStyle:c,labelShowBg:d,labelBgStyle:h,labelBgPadding:m,labelBgBorderRadius:p,style:x,markerEnd:b,markerStart:w,interactionWidth:N})})}const vM=x_({isInternal:!1}),y_=x_({isInternal:!0});vM.displayName="StraightEdge";y_.displayName="StraightEdgeInternal";function v_(e){return V.memo(({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u=ve.Bottom,targetPosition:c=ve.Top,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:x,labelBgBorderRadius:b,style:w,markerEnd:N,markerStart:_,pathOptions:S,interactionWidth:E})=>{const[k,A,M]=Dm({sourceX:r,sourceY:l,sourcePosition:u,targetX:a,targetY:o,targetPosition:c,curvature:S==null?void 0:S.curvature}),j=e.isInternal?void 0:t;return y.jsx(rs,{id:j,path:k,labelX:A,labelY:M,label:d,labelStyle:h,labelShowBg:m,labelBgStyle:p,labelBgPadding:x,labelBgBorderRadius:b,style:w,markerEnd:N,markerStart:_,interactionWidth:E})})}const bM=v_({isInternal:!1}),b_=v_({isInternal:!0});bM.displayName="BezierEdge";b_.displayName="BezierEdgeInternal";const db={default:b_,straight:y_,step:g_,smoothstep:p_,simplebezier:f_},hb={sourceX:null,sourceY:null,targetX:null,targetY:null,sourcePosition:null,targetPosition:null},wM=(e,t,r)=>r===ve.Left?e-t:r===ve.Right?e+t:e,SM=(e,t,r)=>r===ve.Top?e-t:r===ve.Bottom?e+t:e,pb="react-flow__edgeupdater";function mb({position:e,centerX:t,centerY:r,radius:l=10,onMouseDown:a,onMouseEnter:o,onMouseOut:u,type:c}){return y.jsx("circle",{onMouseDown:a,onMouseEnter:o,onMouseOut:u,className:At([pb,`${pb}-${c}`]),cx:wM(t,l,e),cy:SM(r,l,e),r:l,stroke:"transparent",fill:"transparent"})}function _M({isReconnectable:e,reconnectRadius:t,edge:r,sourceX:l,sourceY:a,targetX:o,targetY:u,sourcePosition:c,targetPosition:d,onReconnect:h,onReconnectStart:m,onReconnectEnd:p,setReconnecting:x,setUpdateHover:b}){const w=mt(),N=(A,M)=>{if(A.button!==0)return;const{autoPanOnConnect:j,domNode:L,connectionMode:R,connectionRadius:$,lib:H,onConnectStart:B,cancelConnection:U,nodeLookup:ee,rfId:I,panBy:F,updateConnection:z}=w.getState(),G=M.type==="target",Q=(q,Y)=>{x(!1),p==null||p(q,r,M.type,Y)},K=q=>h==null?void 0:h(r,q),D=(q,Y)=>{x(!0),m==null||m(A,r,M.type),B==null||B(q,Y)};nm.onPointerDown(A.nativeEvent,{autoPanOnConnect:j,connectionMode:R,connectionRadius:$,domNode:L,handleId:M.id,nodeId:M.nodeId,nodeLookup:ee,isTarget:G,edgeUpdaterType:M.type,lib:H,flowId:I,cancelConnection:U,panBy:F,isValidConnection:(...q)=>{var Y,C;return((C=(Y=w.getState()).isValidConnection)==null?void 0:C.call(Y,...q))??!0},onConnect:K,onConnectStart:D,onConnectEnd:(...q)=>{var Y,C;return(C=(Y=w.getState()).onConnectEnd)==null?void 0:C.call(Y,...q)},onReconnectEnd:Q,updateConnection:z,getTransform:()=>w.getState().transform,getFromHandle:()=>w.getState().connection.fromHandle,dragThreshold:w.getState().connectionDragThreshold,handleDomNode:A.currentTarget})},_=A=>N(A,{nodeId:r.target,id:r.targetHandle??null,type:"target"}),S=A=>N(A,{nodeId:r.source,id:r.sourceHandle??null,type:"source"}),E=()=>b(!0),k=()=>b(!1);return y.jsxs(y.Fragment,{children:[(e===!0||e==="source")&&y.jsx(mb,{position:c,centerX:l,centerY:a,radius:t,onMouseDown:_,onMouseEnter:E,onMouseOut:k,type:"source"}),(e===!0||e==="target")&&y.jsx(mb,{position:d,centerX:o,centerY:u,radius:t,onMouseDown:S,onMouseEnter:E,onMouseOut:k,type:"target"})]})}function kM({id:e,edgesFocusable:t,edgesReconnectable:r,elementsSelectable:l,onClick:a,onDoubleClick:o,onContextMenu:u,onMouseEnter:c,onMouseMove:d,onMouseLeave:h,reconnectRadius:m,onReconnect:p,onReconnectStart:x,onReconnectEnd:b,rfId:w,edgeTypes:N,noPanClassName:_,onError:S,disableKeyboardA11y:E}){let k=Ye(ye=>ye.edgeLookup.get(e));const A=Ye(ye=>ye.defaultEdgeOptions);k=A?{...A,...k}:k;let M=k.type||"default",j=(N==null?void 0:N[M])||db[M];j===void 0&&(S==null||S("011",lr.error011(M)),M="default",j=(N==null?void 0:N.default)||db.default);const L=!!(k.focusable||t&&typeof k.focusable>"u"),R=typeof p<"u"&&(k.reconnectable||r&&typeof k.reconnectable>"u"),$=!!(k.selectable||l&&typeof k.selectable>"u"),H=V.useRef(null),[B,U]=V.useState(!1),[ee,I]=V.useState(!1),F=mt(),{zIndex:z,sourceX:G,sourceY:Q,targetX:K,targetY:D,sourcePosition:q,targetPosition:Y}=Ye(V.useCallback(ye=>{const pe=ye.nodeLookup.get(k.source),_e=ye.nodeLookup.get(k.target);if(!pe||!_e)return{zIndex:k.zIndex,...hb};const ze=pA({id:e,sourceNode:pe,targetNode:_e,sourceHandle:k.sourceHandle||null,targetHandle:k.targetHandle||null,connectionMode:ye.connectionMode,onError:S});return{zIndex:aA({selected:k.selected,zIndex:k.zIndex,sourceNode:pe,targetNode:_e,elevateOnSelect:ye.elevateEdgesOnSelect,zIndexMode:ye.zIndexMode}),...ze||hb}},[k.source,k.target,k.sourceHandle,k.targetHandle,k.selected,k.zIndex]),pt),C=V.useMemo(()=>k.markerStart?`url('#${em(k.markerStart,w)}')`:void 0,[k.markerStart,w]),P=V.useMemo(()=>k.markerEnd?`url('#${em(k.markerEnd,w)}')`:void 0,[k.markerEnd,w]);if(k.hidden||G===null||Q===null||K===null||D===null)return null;const X=ye=>{var Te;const{addSelectedEdges:pe,unselectNodesAndEdges:_e,multiSelectionActive:ze}=F.getState();$&&(F.setState({nodesSelectionActive:!1}),k.selected&&ze?(_e({nodes:[],edges:[k]}),(Te=H.current)==null||Te.blur()):pe([e])),a&&a(ye,k)},J=o?ye=>{o(ye,{...k})}:void 0,ne=u?ye=>{u(ye,{...k})}:void 0,re=c?ye=>{c(ye,{...k})}:void 0,se=d?ye=>{d(ye,{...k})}:void 0,xe=h?ye=>{h(ye,{...k})}:void 0,be=ye=>{var pe;if(!E&&yS.includes(ye.key)&&$){const{unselectNodesAndEdges:_e,addSelectedEdges:ze}=F.getState();ye.key==="Escape"?((pe=H.current)==null||pe.blur(),_e({edges:[k]})):ze([e])}};return y.jsx("svg",{style:{zIndex:z},children:y.jsxs("g",{className:At(["react-flow__edge",`react-flow__edge-${M}`,k.className,_,{selected:k.selected,animated:k.animated,inactive:!$&&!a,updating:B,selectable:$}]),onClick:X,onDoubleClick:J,onContextMenu:ne,onMouseEnter:re,onMouseMove:se,onMouseLeave:xe,onKeyDown:L?be:void 0,tabIndex:L?0:void 0,role:k.ariaRole??(L?"group":"img"),"aria-roledescription":"edge","data-id":e,"data-testid":`rf__edge-${e}`,"aria-label":k.ariaLabel===null?void 0:k.ariaLabel||`Edge from ${k.source} to ${k.target}`,"aria-describedby":L?`${QS}-${w}`:void 0,ref:H,...k.domAttributes,children:[!ee&&y.jsx(j,{id:e,source:k.source,target:k.target,type:k.type,selected:k.selected,animated:k.animated,selectable:$,deletable:k.deletable??!0,label:k.label,labelStyle:k.labelStyle,labelShowBg:k.labelShowBg,labelBgStyle:k.labelBgStyle,labelBgPadding:k.labelBgPadding,labelBgBorderRadius:k.labelBgBorderRadius,sourceX:G,sourceY:Q,targetX:K,targetY:D,sourcePosition:q,targetPosition:Y,data:k.data,style:k.style,sourceHandleId:k.sourceHandle,targetHandleId:k.targetHandle,markerStart:C,markerEnd:P,pathOptions:"pathOptions"in k?k.pathOptions:void 0,interactionWidth:k.interactionWidth}),R&&y.jsx(_M,{edge:k,isReconnectable:R,reconnectRadius:m,onReconnect:p,onReconnectStart:x,onReconnectEnd:b,sourceX:G,sourceY:Q,targetX:K,targetY:D,sourcePosition:q,targetPosition:Y,setUpdateHover:U,setReconnecting:I})]})})}var EM=V.memo(kM);const NM=e=>({edgesFocusable:e.edgesFocusable,edgesReconnectable:e.edgesReconnectable,elementsSelectable:e.elementsSelectable,connectionMode:e.connectionMode,onError:e.onError});function w_({defaultMarkerColor:e,onlyRenderVisibleElements:t,rfId:r,edgeTypes:l,noPanClassName:a,onReconnect:o,onEdgeContextMenu:u,onEdgeMouseEnter:c,onEdgeMouseMove:d,onEdgeMouseLeave:h,onEdgeClick:m,reconnectRadius:p,onEdgeDoubleClick:x,onReconnectStart:b,onReconnectEnd:w,disableKeyboardA11y:N}){const{edgesFocusable:_,edgesReconnectable:S,elementsSelectable:E,onError:k}=Ye(NM,pt),A=cM(t);return y.jsxs("div",{className:"react-flow__edges",children:[y.jsx(mM,{defaultColor:e,rfId:r}),A.map(M=>y.jsx(EM,{id:M,edgesFocusable:_,edgesReconnectable:S,elementsSelectable:E,noPanClassName:a,onReconnect:o,onContextMenu:u,onMouseEnter:c,onMouseMove:d,onMouseLeave:h,onClick:m,reconnectRadius:p,onDoubleClick:x,onReconnectStart:b,onReconnectEnd:w,rfId:r,onError:k,edgeTypes:l,disableKeyboardA11y:N},M))]})}w_.displayName="EdgeRenderer";const CM=V.memo(w_),TM=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function jM({children:e}){const t=Ye(TM);return y.jsx("div",{className:"react-flow__viewport xyflow__viewport react-flow__container",style:{transform:t},children:e})}function AM(e){const t=al(),r=V.useRef(!1);V.useEffect(()=>{!r.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),r.current=!0)},[e,t.viewportInitialized])}const zM=e=>{var t;return(t=e.panZoom)==null?void 0:t.syncViewport};function MM(e){const t=Ye(zM),r=mt();return V.useEffect(()=>{e&&(t==null||t(e),r.setState({transform:[e.x,e.y,e.zoom]}))},[e,t]),null}function DM(e){return e.connection.inProgress?{...e.connection,to:ns(e.connection.to,e.transform)}:{...e.connection}}function RM(e){return DM}function OM(e){const t=RM();return Ye(t,pt)}const LM=e=>({nodesConnectable:e.nodesConnectable,isValid:e.connection.isValid,inProgress:e.connection.inProgress,width:e.width,height:e.height});function HM({containerStyle:e,style:t,type:r,component:l}){const{nodesConnectable:a,width:o,height:u,isValid:c,inProgress:d}=Ye(LM,pt);return!(o&&a&&d)?null:y.jsx("svg",{style:e,width:o,height:u,className:"react-flow__connectionline react-flow__container",children:y.jsx("g",{className:At(["react-flow__connection",wS(c)]),children:y.jsx(S_,{style:t,type:r,CustomComponent:l,isValid:c})})})}const S_=({style:e,type:t=xi.Bezier,CustomComponent:r,isValid:l})=>{const{inProgress:a,from:o,fromNode:u,fromHandle:c,fromPosition:d,to:h,toNode:m,toHandle:p,toPosition:x,pointer:b}=OM();if(!a)return;if(r)return y.jsx(r,{connectionLineType:t,connectionLineStyle:e,fromNode:u,fromHandle:c,fromX:o.x,fromY:o.y,toX:h.x,toY:h.y,fromPosition:d,toPosition:x,connectionStatus:wS(l),toNode:m,toHandle:p,pointer:b});let w="";const N={sourceX:o.x,sourceY:o.y,sourcePosition:d,targetX:h.x,targetY:h.y,targetPosition:x};switch(t){case xi.Bezier:[w]=Dm(N);break;case xi.SimpleBezier:[w]=u_(N);break;case xi.Step:[w]=Wp({...N,borderRadius:0});break;case xi.SmoothStep:[w]=Wp(N);break;default:[w]=RS(N)}return y.jsx("path",{d:w,fill:"none",className:"react-flow__connection-path",style:e})};S_.displayName="ConnectionLine";const BM={};function gb(e=BM){V.useRef(e),mt(),V.useEffect(()=>{},[e])}function IM(){mt(),V.useRef(!1),V.useEffect(()=>{},[])}function __({nodeTypes:e,edgeTypes:t,onInit:r,onNodeClick:l,onEdgeClick:a,onNodeDoubleClick:o,onEdgeDoubleClick:u,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,onSelectionContextMenu:p,onSelectionStart:x,onSelectionEnd:b,connectionLineType:w,connectionLineStyle:N,connectionLineComponent:_,connectionLineContainerStyle:S,selectionKeyCode:E,selectionOnDrag:k,selectionMode:A,multiSelectionKeyCode:M,panActivationKeyCode:j,zoomActivationKeyCode:L,deleteKeyCode:R,onlyRenderVisibleElements:$,elementsSelectable:H,defaultViewport:B,translateExtent:U,minZoom:ee,maxZoom:I,preventScrolling:F,defaultMarkerColor:z,zoomOnScroll:G,zoomOnPinch:Q,panOnScroll:K,panOnScrollSpeed:D,panOnScrollMode:q,zoomOnDoubleClick:Y,panOnDrag:C,onPaneClick:P,onPaneMouseEnter:X,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneScroll:re,onPaneContextMenu:se,paneClickDistance:xe,nodeClickDistance:be,onEdgeContextMenu:ye,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:ze,reconnectRadius:Te,onReconnect:ut,onReconnectStart:nt,onReconnectEnd:zt,noDragClassName:Vt,noWheelClassName:Ht,noPanClassName:kn,disableKeyboardA11y:Rn,nodeExtent:Mt,rfId:Hr,viewport:ue,onViewportChange:ge}){return gb(e),gb(t),IM(),AM(r),MM(ue),y.jsx(eM,{onPaneClick:P,onPaneMouseEnter:X,onPaneMouseMove:J,onPaneMouseLeave:ne,onPaneContextMenu:se,onPaneScroll:re,paneClickDistance:xe,deleteKeyCode:R,selectionKeyCode:E,selectionOnDrag:k,selectionMode:A,onSelectionStart:x,onSelectionEnd:b,multiSelectionKeyCode:M,panActivationKeyCode:j,zoomActivationKeyCode:L,elementsSelectable:H,zoomOnScroll:G,zoomOnPinch:Q,zoomOnDoubleClick:Y,panOnScroll:K,panOnScrollSpeed:D,panOnScrollMode:q,panOnDrag:C,defaultViewport:B,translateExtent:U,minZoom:ee,maxZoom:I,onSelectionContextMenu:p,preventScrolling:F,noDragClassName:Vt,noWheelClassName:Ht,noPanClassName:kn,disableKeyboardA11y:Rn,onViewportChange:ge,isControlledViewport:!!ue,children:y.jsxs(jM,{children:[y.jsx(CM,{edgeTypes:t,onEdgeClick:a,onEdgeDoubleClick:u,onReconnect:ut,onReconnectStart:nt,onReconnectEnd:zt,onlyRenderVisibleElements:$,onEdgeContextMenu:ye,onEdgeMouseEnter:pe,onEdgeMouseMove:_e,onEdgeMouseLeave:ze,reconnectRadius:Te,defaultMarkerColor:z,noPanClassName:kn,disableKeyboardA11y:Rn,rfId:Hr}),y.jsx(HM,{style:N,type:w,component:_,containerStyle:S}),y.jsx("div",{className:"react-flow__edgelabel-renderer"}),y.jsx(uM,{nodeTypes:e,onNodeClick:l,onNodeDoubleClick:o,onNodeMouseEnter:c,onNodeMouseMove:d,onNodeMouseLeave:h,onNodeContextMenu:m,nodeClickDistance:be,onlyRenderVisibleElements:$,noPanClassName:kn,noDragClassName:Vt,disableKeyboardA11y:Rn,nodeExtent:Mt,rfId:Hr}),y.jsx("div",{className:"react-flow__viewport-portal"})]})})}__.displayName="GraphView";const qM=V.memo(__),xb=({nodes:e,edges:t,defaultNodes:r,defaultEdges:l,width:a,height:o,fitView:u,fitViewOptions:c,minZoom:d=.5,maxZoom:h=2,nodeOrigin:m,nodeExtent:p,zIndexMode:x="basic"}={})=>{const b=new Map,w=new Map,N=new Map,_=new Map,S=l??t??[],E=r??e??[],k=m??[0,0],A=p??$o;HS(N,_,S);const M=tm(E,b,w,{nodeOrigin:k,nodeExtent:A,zIndexMode:x});let j=[0,0,1];if(u&&a&&o){const L=es(b,{filter:B=>!!((B.width||B.initialWidth)&&(B.height||B.initialHeight))}),{x:R,y:$,zoom:H}=zm(L,a,o,d,h,(c==null?void 0:c.padding)??.1);j=[R,$,H]}return{rfId:"1",width:a??0,height:o??0,transform:j,nodes:E,nodesInitialized:M,nodeLookup:b,parentLookup:w,edges:S,edgeLookup:_,connectionLookup:N,onNodesChange:null,onEdgesChange:null,hasDefaultNodes:r!==void 0,hasDefaultEdges:l!==void 0,panZoom:null,minZoom:d,maxZoom:h,translateExtent:$o,nodeExtent:A,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionMode:ha.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:k,nodeDragThreshold:1,connectionDragThreshold:1,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesReconnectable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,elevateEdgesOnSelect:!0,selectNodesOnDrag:!0,multiSelectionActive:!1,fitViewQueued:u??!1,fitViewOptions:c,fitViewResolver:null,connection:{...bS},connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,autoPanOnNodeFocus:!0,autoPanSpeed:15,connectionRadius:20,onError:eA,isValidConnection:void 0,onSelectionChangeHandlers:[],lib:"react",debug:!1,ariaLabelConfig:vS,zIndexMode:x,onNodesChangeMiddlewareMap:new Map,onEdgesChangeMiddlewareMap:new Map}},UM=({nodes:e,edges:t,defaultNodes:r,defaultEdges:l,width:a,height:o,fitView:u,fitViewOptions:c,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,zIndexMode:x})=>iz((b,w)=>{async function N(){const{nodeLookup:_,panZoom:S,fitViewOptions:E,fitViewResolver:k,width:A,height:M,minZoom:j,maxZoom:L}=w();S&&(await Jj({nodes:_,width:A,height:M,panZoom:S,minZoom:j,maxZoom:L},E),k==null||k.resolve(!0),b({fitViewResolver:null}))}return{...xb({nodes:e,edges:t,width:a,height:o,fitView:u,fitViewOptions:c,minZoom:d,maxZoom:h,nodeOrigin:m,nodeExtent:p,defaultNodes:r,defaultEdges:l,zIndexMode:x}),setNodes:_=>{const{nodeLookup:S,parentLookup:E,nodeOrigin:k,elevateNodesOnSelect:A,fitViewQueued:M,zIndexMode:j}=w(),L=tm(_,S,E,{nodeOrigin:k,nodeExtent:p,elevateNodesOnSelect:A,checkEquality:!0,zIndexMode:j});M&&L?(N(),b({nodes:_,nodesInitialized:L,fitViewQueued:!1,fitViewOptions:void 0})):b({nodes:_,nodesInitialized:L})},setEdges:_=>{const{connectionLookup:S,edgeLookup:E}=w();HS(S,E,_),b({edges:_})},setDefaultNodesAndEdges:(_,S)=>{if(_){const{setNodes:E}=w();E(_),b({hasDefaultNodes:!0})}if(S){const{setEdges:E}=w();E(S),b({hasDefaultEdges:!0})}},updateNodeInternals:_=>{const{triggerNodeChanges:S,nodeLookup:E,parentLookup:k,domNode:A,nodeOrigin:M,nodeExtent:j,debug:L,fitViewQueued:R,zIndexMode:$}=w(),{changes:H,updatedInternals:B}=SA(_,E,k,A,M,j,$);B&&(yA(E,k,{nodeOrigin:M,nodeExtent:j,zIndexMode:$}),R?(N(),b({fitViewQueued:!1,fitViewOptions:void 0})):b({}),(H==null?void 0:H.length)>0&&(L&&console.log("React Flow: trigger node changes",H),S==null||S(H)))},updateNodePositions:(_,S=!1)=>{const E=[];let k=[];const{nodeLookup:A,triggerNodeChanges:M,connection:j,updateConnection:L,onNodesChangeMiddlewareMap:R}=w();for(const[$,H]of _){const B=A.get($),U=!!(B!=null&&B.expandParent&&(B!=null&&B.parentId)&&(H!=null&&H.position)),ee={id:$,type:"position",position:U?{x:Math.max(0,H.position.x),y:Math.max(0,H.position.y)}:H.position,dragging:S};if(B&&j.inProgress&&j.fromNode.id===B.id){const I=tl(B,j.fromHandle,ve.Left,!0);L({...j,from:I})}U&&B.parentId&&E.push({id:$,parentId:B.parentId,rect:{...H.internals.positionAbsolute,width:H.measured.width??0,height:H.measured.height??0}}),k.push(ee)}if(E.length>0){const{parentLookup:$,nodeOrigin:H}=w(),B=Bm(E,A,$,H);k.push(...B)}for(const $ of R.values())k=$(k);M(k)},triggerNodeChanges:_=>{const{onNodesChange:S,setNodes:E,nodes:k,hasDefaultNodes:A,debug:M}=w();if(_!=null&&_.length){if(A){const j=JS(_,k);E(j)}M&&console.log("React Flow: trigger node changes",_),S==null||S(_)}},triggerEdgeChanges:_=>{const{onEdgesChange:S,setEdges:E,edges:k,hasDefaultEdges:A,debug:M}=w();if(_!=null&&_.length){if(A){const j=WS(_,k);E(j)}M&&console.log("React Flow: trigger edge changes",_),S==null||S(_)}},addSelectedNodes:_=>{const{multiSelectionActive:S,edgeLookup:E,nodeLookup:k,triggerNodeChanges:A,triggerEdgeChanges:M}=w();if(S){const j=_.map(L=>Pi(L,!0));A(j);return}A(ia(k,new Set([..._]),!0)),M(ia(E))},addSelectedEdges:_=>{const{multiSelectionActive:S,edgeLookup:E,nodeLookup:k,triggerNodeChanges:A,triggerEdgeChanges:M}=w();if(S){const j=_.map(L=>Pi(L,!0));M(j);return}M(ia(E,new Set([..._]))),A(ia(k,new Set,!0))},unselectNodesAndEdges:({nodes:_,edges:S}={})=>{const{edges:E,nodes:k,nodeLookup:A,triggerNodeChanges:M,triggerEdgeChanges:j}=w(),L=_||k,R=S||E,$=[];for(const B of L){if(!B.selected)continue;const U=A.get(B.id);U&&(U.selected=!1),$.push(Pi(B.id,!1))}const H=[];for(const B of R)B.selected&&H.push(Pi(B.id,!1));M($),j(H)},setMinZoom:_=>{const{panZoom:S,maxZoom:E}=w();S==null||S.setScaleExtent([_,E]),b({minZoom:_})},setMaxZoom:_=>{const{panZoom:S,minZoom:E}=w();S==null||S.setScaleExtent([E,_]),b({maxZoom:_})},setTranslateExtent:_=>{var S;(S=w().panZoom)==null||S.setTranslateExtent(_),b({translateExtent:_})},resetSelectedElements:()=>{const{edges:_,nodes:S,triggerNodeChanges:E,triggerEdgeChanges:k,elementsSelectable:A}=w();if(!A)return;const M=S.reduce((L,R)=>R.selected?[...L,Pi(R.id,!1)]:L,[]),j=_.reduce((L,R)=>R.selected?[...L,Pi(R.id,!1)]:L,[]);E(M),k(j)},setNodeExtent:_=>{const{nodes:S,nodeLookup:E,parentLookup:k,nodeOrigin:A,elevateNodesOnSelect:M,nodeExtent:j,zIndexMode:L}=w();_[0][0]===j[0][0]&&_[0][1]===j[0][1]&&_[1][0]===j[1][0]&&_[1][1]===j[1][1]||(tm(S,E,k,{nodeOrigin:A,nodeExtent:_,elevateNodesOnSelect:M,checkEquality:!1,zIndexMode:L}),b({nodeExtent:_}))},panBy:_=>{const{transform:S,width:E,height:k,panZoom:A,translateExtent:M}=w();return _A({delta:_,panZoom:A,transform:S,translateExtent:M,width:E,height:k})},setCenter:async(_,S,E)=>{const{width:k,height:A,maxZoom:M,panZoom:j}=w();if(!j)return Promise.resolve(!1);const L=typeof(E==null?void 0:E.zoom)<"u"?E.zoom:M;return await j.setViewport({x:k/2-_*L,y:A/2-S*L,zoom:L},{duration:E==null?void 0:E.duration,ease:E==null?void 0:E.ease,interpolate:E==null?void 0:E.interpolate}),Promise.resolve(!0)},cancelConnection:()=>{b({connection:{...bS}})},updateConnection:_=>{b({connection:_})},reset:()=>b({...xb()})}},Object.is);function $M({initialNodes:e,initialEdges:t,defaultNodes:r,defaultEdges:l,initialWidth:a,initialHeight:o,initialMinZoom:u,initialMaxZoom:c,initialFitViewOptions:d,fitView:h,nodeOrigin:m,nodeExtent:p,zIndexMode:x,children:b}){const[w]=V.useState(()=>UM({nodes:e,edges:t,defaultNodes:r,defaultEdges:l,width:a,height:o,fitView:h,minZoom:u,maxZoom:c,fitViewOptions:d,nodeOrigin:m,nodeExtent:p,zIndexMode:x}));return y.jsx(az,{value:w,children:y.jsx(jz,{children:b})})}function VM({children:e,nodes:t,edges:r,defaultNodes:l,defaultEdges:a,width:o,height:u,fitView:c,fitViewOptions:d,minZoom:h,maxZoom:m,nodeOrigin:p,nodeExtent:x,zIndexMode:b}){return V.useContext(Oc)?y.jsx(y.Fragment,{children:e}):y.jsx($M,{initialNodes:t,initialEdges:r,defaultNodes:l,defaultEdges:a,initialWidth:o,initialHeight:u,fitView:c,initialFitViewOptions:d,initialMinZoom:h,initialMaxZoom:m,nodeOrigin:p,nodeExtent:x,zIndexMode:b,children:e})}const PM={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0};function GM({nodes:e,edges:t,defaultNodes:r,defaultEdges:l,className:a,nodeTypes:o,edgeTypes:u,onNodeClick:c,onEdgeClick:d,onInit:h,onMove:m,onMoveStart:p,onMoveEnd:x,onConnect:b,onConnectStart:w,onConnectEnd:N,onClickConnectStart:_,onClickConnectEnd:S,onNodeMouseEnter:E,onNodeMouseMove:k,onNodeMouseLeave:A,onNodeContextMenu:M,onNodeDoubleClick:j,onNodeDragStart:L,onNodeDrag:R,onNodeDragStop:$,onNodesDelete:H,onEdgesDelete:B,onDelete:U,onSelectionChange:ee,onSelectionDragStart:I,onSelectionDrag:F,onSelectionDragStop:z,onSelectionContextMenu:G,onSelectionStart:Q,onSelectionEnd:K,onBeforeDelete:D,connectionMode:q,connectionLineType:Y=xi.Bezier,connectionLineStyle:C,connectionLineComponent:P,connectionLineContainerStyle:X,deleteKeyCode:J="Backspace",selectionKeyCode:ne="Shift",selectionOnDrag:re=!1,selectionMode:se=Vo.Full,panActivationKeyCode:xe="Space",multiSelectionKeyCode:be=Go()?"Meta":"Control",zoomActivationKeyCode:ye=Go()?"Meta":"Control",snapToGrid:pe,snapGrid:_e,onlyRenderVisibleElements:ze=!1,selectNodesOnDrag:Te,nodesDraggable:ut,autoPanOnNodeFocus:nt,nodesConnectable:zt,nodesFocusable:Vt,nodeOrigin:Ht=ZS,edgesFocusable:kn,edgesReconnectable:Rn,elementsSelectable:Mt=!0,defaultViewport:Hr=vz,minZoom:ue=.5,maxZoom:ge=2,translateExtent:Ne=$o,preventScrolling:Le=!0,nodeExtent:Xe,defaultMarkerColor:Qt="#b1b1b7",zoomOnScroll:On=!0,zoomOnPinch:Bt=!0,panOnScroll:vt=!1,panOnScrollSpeed:Pt=.5,panOnScrollMode:We=Zi.Free,zoomOnDoubleClick:Qn=!0,panOnDrag:fn=!0,onPaneClick:Fc,onPaneMouseEnter:cl,onPaneMouseMove:fl,onPaneMouseLeave:dl,onPaneScroll:sr,onPaneContextMenu:hl,paneClickDistance:bi=1,nodeClickDistance:Yc=0,children:ss,onReconnect:wa,onReconnectStart:wi,onReconnectEnd:Xc,onEdgeContextMenu:us,onEdgeDoubleClick:cs,onEdgeMouseEnter:fs,onEdgeMouseMove:Sa,onEdgeMouseLeave:_a,reconnectRadius:ds=10,onNodesChange:hs,onEdgesChange:Zn,noDragClassName:Dt="nodrag",noWheelClassName:Gt="nowheel",noPanClassName:ur="nopan",fitView:pl,fitViewOptions:ps,connectOnClick:Qc,attributionPosition:ms,proOptions:Si,defaultEdgeOptions:ka,elevateNodesOnSelect:Br=!0,elevateEdgesOnSelect:Ir=!1,disableKeyboardA11y:qr=!1,autoPanOnConnect:Ur,autoPanOnNodeDrag:St,autoPanSpeed:gs,connectionRadius:xs,isValidConnection:cr,onError:$r,style:Zc,id:Ea,nodeDragThreshold:ys,connectionDragThreshold:Kc,viewport:ml,onViewportChange:gl,width:Ln,height:Wt,colorMode:vs="light",debug:Jc,onScroll:Vr,ariaLabelConfig:bs,zIndexMode:_i="basic",...Wc},en){const ki=Ea||"1",ws=_z(vs),Na=V.useCallback(fr=>{fr.currentTarget.scrollTo({top:0,left:0,behavior:"instant"}),Vr==null||Vr(fr)},[Vr]);return y.jsx("div",{"data-testid":"rf__wrapper",...Wc,onScroll:Na,style:{...Zc,...PM},ref:en,className:At(["react-flow",a,ws]),id:Ea,role:"application",children:y.jsxs(VM,{nodes:e,edges:t,width:Ln,height:Wt,fitView:pl,fitViewOptions:ps,minZoom:ue,maxZoom:ge,nodeOrigin:Ht,nodeExtent:Xe,zIndexMode:_i,children:[y.jsx(qM,{onInit:h,onNodeClick:c,onEdgeClick:d,onNodeMouseEnter:E,onNodeMouseMove:k,onNodeMouseLeave:A,onNodeContextMenu:M,onNodeDoubleClick:j,nodeTypes:o,edgeTypes:u,connectionLineType:Y,connectionLineStyle:C,connectionLineComponent:P,connectionLineContainerStyle:X,selectionKeyCode:ne,selectionOnDrag:re,selectionMode:se,deleteKeyCode:J,multiSelectionKeyCode:be,panActivationKeyCode:xe,zoomActivationKeyCode:ye,onlyRenderVisibleElements:ze,defaultViewport:Hr,translateExtent:Ne,minZoom:ue,maxZoom:ge,preventScrolling:Le,zoomOnScroll:On,zoomOnPinch:Bt,zoomOnDoubleClick:Qn,panOnScroll:vt,panOnScrollSpeed:Pt,panOnScrollMode:We,panOnDrag:fn,onPaneClick:Fc,onPaneMouseEnter:cl,onPaneMouseMove:fl,onPaneMouseLeave:dl,onPaneScroll:sr,onPaneContextMenu:hl,paneClickDistance:bi,nodeClickDistance:Yc,onSelectionContextMenu:G,onSelectionStart:Q,onSelectionEnd:K,onReconnect:wa,onReconnectStart:wi,onReconnectEnd:Xc,onEdgeContextMenu:us,onEdgeDoubleClick:cs,onEdgeMouseEnter:fs,onEdgeMouseMove:Sa,onEdgeMouseLeave:_a,reconnectRadius:ds,defaultMarkerColor:Qt,noDragClassName:Dt,noWheelClassName:Gt,noPanClassName:ur,rfId:ki,disableKeyboardA11y:qr,nodeExtent:Xe,viewport:ml,onViewportChange:gl}),y.jsx(Sz,{nodes:e,edges:t,defaultNodes:r,defaultEdges:l,onConnect:b,onConnectStart:w,onConnectEnd:N,onClickConnectStart:_,onClickConnectEnd:S,nodesDraggable:ut,autoPanOnNodeFocus:nt,nodesConnectable:zt,nodesFocusable:Vt,edgesFocusable:kn,edgesReconnectable:Rn,elementsSelectable:Mt,elevateNodesOnSelect:Br,elevateEdgesOnSelect:Ir,minZoom:ue,maxZoom:ge,nodeExtent:Xe,onNodesChange:hs,onEdgesChange:Zn,snapToGrid:pe,snapGrid:_e,connectionMode:q,translateExtent:Ne,connectOnClick:Qc,defaultEdgeOptions:ka,fitView:pl,fitViewOptions:ps,onNodesDelete:H,onEdgesDelete:B,onDelete:U,onNodeDragStart:L,onNodeDrag:R,onNodeDragStop:$,onSelectionDrag:F,onSelectionDragStart:I,onSelectionDragStop:z,onMove:m,onMoveStart:p,onMoveEnd:x,noPanClassName:ur,nodeOrigin:Ht,rfId:ki,autoPanOnConnect:Ur,autoPanOnNodeDrag:St,autoPanSpeed:gs,onError:$r,connectionRadius:xs,isValidConnection:cr,selectNodesOnDrag:Te,nodeDragThreshold:ys,connectionDragThreshold:Kc,onBeforeDelete:D,debug:Jc,ariaLabelConfig:bs,zIndexMode:_i}),y.jsx(yz,{onSelectionChange:ee}),ss,y.jsx(hz,{proOptions:Si,position:ms}),y.jsx(dz,{rfId:ki,disableKeyboardA11y:qr})]})})}var FM=e_(GM);const YM=e=>{var t;return(t=e.domNode)==null?void 0:t.querySelector(".react-flow__edgelabel-renderer")};function XM({children:e}){const t=Ye(YM);return t?lz.createPortal(e,t):null}function QM(e){const[t,r]=V.useState(e),l=V.useCallback(a=>r(o=>JS(a,o)),[]);return[t,r,l]}function ZM(e){const[t,r]=V.useState(e),l=V.useCallback(a=>r(o=>WS(a,o)),[]);return[t,r,l]}function KM({dimensions:e,lineWidth:t,variant:r,className:l}){return y.jsx("path",{strokeWidth:t,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`,className:At(["react-flow__background-pattern",r,l])})}function JM({radius:e,className:t}){return y.jsx("circle",{cx:e,cy:e,r:e,className:At(["react-flow__background-pattern","dots",t])})}var Mr;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(Mr||(Mr={}));const WM={[Mr.Dots]:1,[Mr.Lines]:1,[Mr.Cross]:6},e5=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function k_({id:e,variant:t=Mr.Dots,gap:r=20,size:l,lineWidth:a=1,offset:o=0,color:u,bgColor:c,style:d,className:h,patternClassName:m}){const p=V.useRef(null),{transform:x,patternId:b}=Ye(e5,pt),w=l||WM[t],N=t===Mr.Dots,_=t===Mr.Cross,S=Array.isArray(r)?r:[r,r],E=[S[0]*x[2]||1,S[1]*x[2]||1],k=w*x[2],A=Array.isArray(o)?o:[o,o],M=_?[k,k]:E,j=[A[0]*x[2]||1+M[0]/2,A[1]*x[2]||1+M[1]/2],L=`${b}${e||""}`;return y.jsxs("svg",{className:At(["react-flow__background",h]),style:{...d,...Hc,"--xy-background-color-props":c,"--xy-background-pattern-color-props":u},ref:p,"data-testid":"rf__background",children:[y.jsx("pattern",{id:L,x:x[0]%E[0],y:x[1]%E[1],width:E[0],height:E[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${j[0]},-${j[1]})`,children:N?y.jsx(JM,{radius:k/2,className:m}):y.jsx(KM,{dimensions:M,lineWidth:a,variant:t,className:m})}),y.jsx("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${L})`})]})}k_.displayName="Background";const t5=V.memo(k_);function n5(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",children:y.jsx("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"})})}function r5(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5",children:y.jsx("path",{d:"M0 0h32v4.2H0z"})})}function i5(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30",children:y.jsx("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"})})}function l5(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:y.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"})})}function a5(){return y.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32",children:y.jsx("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"})})}function Pu({children:e,className:t,...r}){return y.jsx("button",{type:"button",className:At(["react-flow__controls-button",t]),...r,children:e})}const o5=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom,ariaLabelConfig:e.ariaLabelConfig});function E_({style:e,showZoom:t=!0,showFitView:r=!0,showInteractive:l=!0,fitViewOptions:a,onZoomIn:o,onZoomOut:u,onFitView:c,onInteractiveChange:d,className:h,children:m,position:p="bottom-left",orientation:x="vertical","aria-label":b}){const w=mt(),{isInteractive:N,minZoomReached:_,maxZoomReached:S,ariaLabelConfig:E}=Ye(o5,pt),{zoomIn:k,zoomOut:A,fitView:M}=al(),j=()=>{k(),o==null||o()},L=()=>{A(),u==null||u()},R=()=>{M(a),c==null||c()},$=()=>{w.setState({nodesDraggable:!N,nodesConnectable:!N,elementsSelectable:!N}),d==null||d(!N)},H=x==="horizontal"?"horizontal":"vertical";return y.jsxs(Lc,{className:At(["react-flow__controls",H,h]),position:p,style:e,"data-testid":"rf__controls","aria-label":b??E["controls.ariaLabel"],children:[t&&y.jsxs(y.Fragment,{children:[y.jsx(Pu,{onClick:j,className:"react-flow__controls-zoomin",title:E["controls.zoomIn.ariaLabel"],"aria-label":E["controls.zoomIn.ariaLabel"],disabled:S,children:y.jsx(n5,{})}),y.jsx(Pu,{onClick:L,className:"react-flow__controls-zoomout",title:E["controls.zoomOut.ariaLabel"],"aria-label":E["controls.zoomOut.ariaLabel"],disabled:_,children:y.jsx(r5,{})})]}),r&&y.jsx(Pu,{className:"react-flow__controls-fitview",onClick:R,title:E["controls.fitView.ariaLabel"],"aria-label":E["controls.fitView.ariaLabel"],children:y.jsx(i5,{})}),l&&y.jsx(Pu,{className:"react-flow__controls-interactive",onClick:$,title:E["controls.interactive.ariaLabel"],"aria-label":E["controls.interactive.ariaLabel"],children:N?y.jsx(a5,{}):y.jsx(l5,{})}),m]})}E_.displayName="Controls";const s5=V.memo(E_);function u5({id:e,x:t,y:r,width:l,height:a,style:o,color:u,strokeColor:c,strokeWidth:d,className:h,borderRadius:m,shapeRendering:p,selected:x,onClick:b}){const{background:w,backgroundColor:N}=o||{},_=u||w||N;return y.jsx("rect",{className:At(["react-flow__minimap-node",{selected:x},h]),x:t,y:r,rx:m,ry:m,width:l,height:a,style:{fill:_,stroke:c,strokeWidth:d},shapeRendering:p,onClick:b?S=>b(S,e):void 0})}const c5=V.memo(u5),f5=e=>e.nodes.map(t=>t.id),Th=e=>e instanceof Function?e:()=>e;function d5({nodeStrokeColor:e,nodeColor:t,nodeClassName:r="",nodeBorderRadius:l=5,nodeStrokeWidth:a,nodeComponent:o=c5,onClick:u}){const c=Ye(f5,pt),d=Th(t),h=Th(e),m=Th(r),p=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return y.jsx(y.Fragment,{children:c.map(x=>y.jsx(p5,{id:x,nodeColorFunc:d,nodeStrokeColorFunc:h,nodeClassNameFunc:m,nodeBorderRadius:l,nodeStrokeWidth:a,NodeComponent:o,onClick:u,shapeRendering:p},x))})}function h5({id:e,nodeColorFunc:t,nodeStrokeColorFunc:r,nodeClassNameFunc:l,nodeBorderRadius:a,nodeStrokeWidth:o,shapeRendering:u,NodeComponent:c,onClick:d}){const{node:h,x:m,y:p,width:x,height:b}=Ye(w=>{const N=w.nodeLookup.get(e);if(!N)return{node:void 0,x:0,y:0,width:0,height:0};const _=N.internals.userNode,{x:S,y:E}=N.internals.positionAbsolute,{width:k,height:A}=Or(_);return{node:_,x:S,y:E,width:k,height:A}},pt);return!h||h.hidden||!CS(h)?null:y.jsx(c,{x:m,y:p,width:x,height:b,style:h.style,selected:!!h.selected,className:l(h),color:t(h),borderRadius:a,strokeColor:r(h),strokeWidth:o,shapeRendering:u,onClick:d,id:h.id})}const p5=V.memo(h5);var m5=V.memo(d5);const g5=200,x5=150,y5=e=>!e.hidden,v5=e=>{const t={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:t,boundingRect:e.nodeLookup.size>0?NS(es(e.nodeLookup,{filter:y5}),t):t,rfId:e.rfId,panZoom:e.panZoom,translateExtent:e.translateExtent,flowWidth:e.width,flowHeight:e.height,ariaLabelConfig:e.ariaLabelConfig}},b5="react-flow__minimap-desc";function N_({style:e,className:t,nodeStrokeColor:r,nodeColor:l,nodeClassName:a="",nodeBorderRadius:o=5,nodeStrokeWidth:u,nodeComponent:c,bgColor:d,maskColor:h,maskStrokeColor:m,maskStrokeWidth:p,position:x="bottom-right",onClick:b,onNodeClick:w,pannable:N=!1,zoomable:_=!1,ariaLabel:S,inversePan:E,zoomStep:k=1,offsetScale:A=5}){const M=mt(),j=V.useRef(null),{boundingRect:L,viewBB:R,rfId:$,panZoom:H,translateExtent:B,flowWidth:U,flowHeight:ee,ariaLabelConfig:I}=Ye(v5,pt),F=(e==null?void 0:e.width)??g5,z=(e==null?void 0:e.height)??x5,G=L.width/F,Q=L.height/z,K=Math.max(G,Q),D=K*F,q=K*z,Y=A*K,C=L.x-(D-L.width)/2-Y,P=L.y-(q-L.height)/2-Y,X=D+Y*2,J=q+Y*2,ne=`${b5}-${$}`,re=V.useRef(0),se=V.useRef();re.current=K,V.useEffect(()=>{if(j.current&&H)return se.current=MA({domNode:j.current,panZoom:H,getTransform:()=>M.getState().transform,getViewScale:()=>re.current}),()=>{var pe;(pe=se.current)==null||pe.destroy()}},[H]),V.useEffect(()=>{var pe;(pe=se.current)==null||pe.update({translateExtent:B,width:U,height:ee,inversePan:E,pannable:N,zoomStep:k,zoomable:_})},[N,_,E,k,B,U,ee]);const xe=b?pe=>{var Te;const[_e,ze]=((Te=se.current)==null?void 0:Te.pointer(pe))||[0,0];b(pe,{x:_e,y:ze})}:void 0,be=w?V.useCallback((pe,_e)=>{const ze=M.getState().nodeLookup.get(_e).internals.userNode;w(pe,ze)},[]):void 0,ye=S??I["minimap.ariaLabel"];return y.jsx(Lc,{position:x,style:{...e,"--xy-minimap-background-color-props":typeof d=="string"?d:void 0,"--xy-minimap-mask-background-color-props":typeof h=="string"?h:void 0,"--xy-minimap-mask-stroke-color-props":typeof m=="string"?m:void 0,"--xy-minimap-mask-stroke-width-props":typeof p=="number"?p*K:void 0,"--xy-minimap-node-background-color-props":typeof l=="string"?l:void 0,"--xy-minimap-node-stroke-color-props":typeof r=="string"?r:void 0,"--xy-minimap-node-stroke-width-props":typeof u=="number"?u:void 0},className:At(["react-flow__minimap",t]),"data-testid":"rf__minimap",children:y.jsxs("svg",{width:F,height:z,viewBox:`${C} ${P} ${X} ${J}`,className:"react-flow__minimap-svg",role:"img","aria-labelledby":ne,ref:j,onClick:xe,children:[ye&&y.jsx("title",{id:ne,children:ye}),y.jsx(m5,{onClick:be,nodeColor:l,nodeStrokeColor:r,nodeBorderRadius:o,nodeClassName:a,nodeStrokeWidth:u,nodeComponent:c}),y.jsx("path",{className:"react-flow__minimap-mask",d:`M${C-Y},${P-Y}h${X+Y*2}v${J+Y*2}h${-X-Y*2}z - M${R.x},${R.y}h${R.width}v${R.height}h${-R.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}N_.displayName="MiniMap";const w5=V.memo(N_),S5=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,_5={[xa.Line]:"right",[xa.Handle]:"bottom-right"};function k5({nodeId:e,position:t,variant:r=xa.Handle,className:l,style:a=void 0,children:o,color:u,minWidth:c=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:x,autoScale:b=!0,shouldResize:w,onResizeStart:N,onResize:_,onResizeEnd:S}){const E=i_(),k=typeof e=="string"?e:E,A=mt(),M=V.useRef(null),j=r===xa.Handle,L=Ye(V.useCallback(S5(j&&b),[j,b]),pt),R=V.useRef(null),$=t??_5[r];V.useEffect(()=>{if(!(!M.current||!k))return R.current||(R.current=FA({domNode:M.current,nodeId:k,getStoreItems:()=>{const{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:I,nodeOrigin:F,domNode:z}=A.getState();return{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:I,nodeOrigin:F,paneDomNode:z}},onChange:(B,U)=>{const{triggerNodeChanges:ee,nodeLookup:I,parentLookup:F,nodeOrigin:z}=A.getState(),G=[],Q={x:B.x,y:B.y},K=I.get(k);if(K&&K.expandParent&&K.parentId){const D=K.origin??z,q=B.width??K.measured.width??0,Y=B.height??K.measured.height??0,C={id:K.id,parentId:K.parentId,rect:{width:q,height:Y,...TS({x:B.x??K.position.x,y:B.y??K.position.y},{width:q,height:Y},K.parentId,I,D)}},P=Bm([C],I,F,z);G.push(...P),Q.x=B.x?Math.max(D[0]*q,B.x):void 0,Q.y=B.y?Math.max(D[1]*Y,B.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const D={id:k,type:"position",position:{...Q}};G.push(D)}if(B.width!==void 0&&B.height!==void 0){const q={id:k,type:"dimensions",resizing:!0,setAttributes:x?x==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};G.push(q)}for(const D of U){const q={...D,type:"position"};G.push(q)}ee(G)},onEnd:({width:B,height:U})=>{const ee={id:k,type:"dimensions",resizing:!1,dimensions:{width:B,height:U}};A.getState().triggerNodeChanges([ee])}})),R.current.update({controlPosition:$,boundaries:{minWidth:c,minHeight:d,maxWidth:h,maxHeight:m},keepAspectRatio:p,resizeDirection:x,onResizeStart:N,onResize:_,onResizeEnd:S,shouldResize:w}),()=>{var B;(B=R.current)==null||B.destroy()}},[$,c,d,h,m,p,N,_,S,w]);const H=$.split("-");return y.jsx("div",{className:At(["react-flow__resize-control","nodrag",...H,r,l]),ref:M,style:{...a,scale:L,...u&&{[j?"backgroundColor":"borderColor"]:u}},children:o})}V.memo(k5);function is(e,t){if(t.length===0)return null;let r=e[t[0]];for(let l=1;ll.viewContextPath),t=fe(l=>l.nodes),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.nodes)??t},[e,t,r])}function E5(){const e=fe(l=>l.viewContextPath),t=fe(l=>l.groupProgress),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.groupProgress)??t},[e,t,r])}function N5(){const e=fe(l=>l.viewContextPath),t=fe(l=>l.highlightedEdges),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.highlightedEdges)??t},[e,t,r])}function qm(){const e=fe(r=>r.viewContextPath),t=fe(r=>r.subworkflowContexts);return V.useMemo(()=>{var r;return e.length===0?t:((r=is(t,e))==null?void 0:r.children)??[]},[e,t])}function C5(){const e=fe(h=>h.viewContextPath),t=fe(h=>h.agents),r=fe(h=>h.routes),l=fe(h=>h.parallelGroups),a=fe(h=>h.forEachGroups),o=fe(h=>h.nodes),u=fe(h=>h.groupProgress),c=fe(h=>h.entryPoint),d=fe(h=>h.subworkflowContexts);return V.useMemo(()=>{if(e.length===0)return{agents:t,routes:r,parallelGroups:l,forEachGroups:a,nodes:o,groupProgress:u,entryPoint:c,subworkflowContexts:d,parentAgent:null};const h=is(d,e);return h?{agents:h.agents,routes:h.routes,parallelGroups:h.parallelGroups,forEachGroups:h.forEachGroups,nodes:h.nodes,groupProgress:h.groupProgress,entryPoint:h.entryPoint,subworkflowContexts:h.children,parentAgent:h.parentAgent}:{agents:t,routes:r,parallelGroups:l,forEachGroups:a,nodes:o,groupProgress:u,entryPoint:c,subworkflowContexts:d,parentAgent:null}},[e,t,r,l,a,o,u,c,d])}function T5(){const e=new URLSearchParams(window.location.search);return{subworkflowPath:e.get("subworkflow"),agent:e.get("agent")}}function yb(e,t){const r=[];let l=e;for(const a of t){let o=-1;for(let u=l.length-1;u>=0;u--)if(l[u].slotKey===a){o=u;break}if(o===-1){for(let u=l.length-1;u>=0;u--)if(l[u].parentAgent===a){o=u;break}}if(o===-1)return{path:r,failedSegment:a};r.push(o),l=l[o].children}return{path:r,failedSegment:null}}function im(e,t,r=[]){const l=[];for(let a=0;ac.name===t)&&l.push({path:u,ctx:o}),o.children.length>0&&l.push(...im(o.children,t,u))}return l}function j5(e){return e.length===0?null:[...e].sort((t,r)=>{const l=t.ctx.status==="running"?1:0,a=r.ctx.status==="running"?1:0;if(l!==a)return a-l;if(t.path.length!==r.path.length)return r.path.length-t.path.length;for(let o=0;o{if(r.current||!u)return;let c=null,d=null,h=null;const m=()=>{if(r.current)return;r.current=!0,c&&clearTimeout(c),d&&clearTimeout(d),h&&h();const b=fe.getState();if(b.agents.length===0){t({message:"Workflow state did not load."});return}let w=[];if(a){const N=a.split("/").filter(Boolean),_=yb(b.subworkflowContexts,N);if(_.failedSegment){const S=N.slice(0,_.path.length).join("/");t({message:`Subworkflow "${_.failedSegment}" not found${S?` (resolved: ${S})`:""}. It may not have started yet.`});return}w=_.path}if(o){if((w.length===0?b.agents:(()=>{let _,S=b.subworkflowContexts;for(const E of w){if(_=S[E],!_)break;S=_.children}return(_==null?void 0:_.agents)??[]})()).some(_=>_.name===o))fe.setState({viewContextPath:w,selectedNode:o});else{const _=im(b.subworkflowContexts,o);if(_.length===0){const E=a||"root workflow";fe.setState({viewContextPath:w,selectedNode:null}),t({message:`Agent "${o}" not found in ${E}.`});return}if(a){const E=_.slice(0,5).map(A=>A5(b.subworkflowContexts,A.path)).join(", "),k=_.length>5?`, and ${_.length-5} more`:"";fe.setState({viewContextPath:w,selectedNode:null}),t({message:`Agent "${o}" not found in ${a}. Found in: ${E}${k}`});return}const S=j5(_);fe.setState({viewContextPath:S.path,selectedNode:o})}setTimeout(()=>{l({nodes:[{id:o}],padding:.5,duration:400})},200)}else a&&fe.setState({viewContextPath:w,selectedNode:null})},p=()=>{const b=fe.getState();if(b.agents.length===0)return!1;if(b.workflowStatus!=="running"&&b.workflowStatus!=="pending")return!0;if(a){const w=a.split("/").filter(Boolean),{failedSegment:N}=yb(b.subworkflowContexts,w);if(N)return!1}return!(o&&!a&&!b.agents.some(N=>N.name===o)&&im(b.subworkflowContexts,o).length===0)},x=()=>{c&&clearTimeout(c),c=setTimeout(()=>{r.current||p()&&m()},200)};return h=fe.subscribe(x),d=setTimeout(()=>{r.current||m()},5e3),x(),()=>{c&&clearTimeout(c),d&&clearTimeout(d),h&&h()}},[u,a,o,l]),e}var jh,vb;function Um(){if(vb)return jh;vb=1;var e="\0",t="\0",r="";class l{constructor(m){Ct(this,"_isDirected",!0);Ct(this,"_isMultigraph",!1);Ct(this,"_isCompound",!1);Ct(this,"_label");Ct(this,"_defaultNodeLabelFn",()=>{});Ct(this,"_defaultEdgeLabelFn",()=>{});Ct(this,"_nodes",{});Ct(this,"_in",{});Ct(this,"_preds",{});Ct(this,"_out",{});Ct(this,"_sucs",{});Ct(this,"_edgeObjs",{});Ct(this,"_edgeLabels",{});Ct(this,"_nodeCount",0);Ct(this,"_edgeCount",0);Ct(this,"_parent");Ct(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[t]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var x=arguments,b=this;return m.forEach(function(w){x.length>1?b.setNode(w,p):b.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=t,this._children[m]={},this._children[t][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var x=b=>p.removeEdge(p._edgeObjs[b]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(b){p.setParent(b)}),delete this._children[m]),Object.keys(this._in[m]).forEach(x),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(x),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=t;else{p+="";for(var x=p;x!==void 0;x=this.parent(x))if(x===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==t)return p}}children(m=t){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===t)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const b=new Set(p);for(var x of this.successors(m))b.add(x);return Array.from(b.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var x=this;Object.entries(this._nodes).forEach(function([N,_]){m(N)&&p.setNode(N,_)}),Object.values(this._edgeObjs).forEach(function(N){p.hasNode(N.v)&&p.hasNode(N.w)&&p.setEdge(N,x.edge(N))});var b={};function w(N){var _=x.parent(N);return _===void 0||p.hasNode(_)?(b[N]=_,_):_ in b?b[_]:w(_)}return this._isCompound&&p.nodes().forEach(N=>p.setParent(N,w(N))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var x=this,b=arguments;return m.reduce(function(w,N){return b.length>1?x.setEdge(w,N,p):x.setEdge(w,N),N}),this}setEdge(){var m,p,x,b,w=!1,N=arguments[0];typeof N=="object"&&N!==null&&"v"in N?(m=N.v,p=N.w,x=N.name,arguments.length===2&&(b=arguments[1],w=!0)):(m=N,p=arguments[1],x=arguments[3],arguments.length>2&&(b=arguments[2],w=!0)),m=""+m,p=""+p,x!==void 0&&(x=""+x);var _=u(this._isDirected,m,p,x);if(Object.hasOwn(this._edgeLabels,_))return w&&(this._edgeLabels[_]=b),this;if(x!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[_]=w?b:this._defaultEdgeLabelFn(m,p,x);var S=c(this._isDirected,m,p,x);return m=S.v,p=S.w,Object.freeze(S),this._edgeObjs[_]=S,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][_]=S,this._out[m][_]=S,this._edgeCount++,this}edge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x);return this._edgeLabels[b]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x);return Object.hasOwn(this._edgeLabels,b)}removeEdge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x),w=this._edgeObjs[b];return w&&(m=w.v,p=w.w,delete this._edgeLabels[b],delete this._edgeObjs[b],o(this._preds[p],m),o(this._sucs[m],p),delete this._in[p][b],delete this._out[m][b],this._edgeCount--),this}inEdges(m,p){var x=this._in[m];if(x){var b=Object.values(x);return p?b.filter(w=>w.v===p):b}}outEdges(m,p){var x=this._out[m];if(x){var b=Object.values(x);return p?b.filter(w=>w.w===p):b}}nodeEdges(m,p){var x=this.inEdges(m,p);if(x)return x.concat(this.outEdges(m,p))}}function a(h,m){h[m]?h[m]++:h[m]=1}function o(h,m){--h[m]||delete h[m]}function u(h,m,p,x){var b=""+m,w=""+p;if(!h&&b>w){var N=b;b=w,w=N}return b+r+w+r+(x===void 0?e:x)}function c(h,m,p,x){var b=""+m,w=""+p;if(!h&&b>w){var N=b;b=w,w=N}var _={v:b,w};return x&&(_.name=x),_}function d(h,m){return u(h,m.v,m.w,m.name)}return jh=l,jh}var Ah,bb;function M5(){return bb||(bb=1,Ah="2.2.4"),Ah}var zh,wb;function D5(){return wb||(wb=1,zh={Graph:Um(),version:M5()}),zh}var Mh,Sb;function R5(){if(Sb)return Mh;Sb=1;var e=Um();Mh={write:t,read:a};function t(o){var u={options:{directed:o.isDirected(),multigraph:o.isMultigraph(),compound:o.isCompound()},nodes:r(o),edges:l(o)};return o.graph()!==void 0&&(u.value=structuredClone(o.graph())),u}function r(o){return o.nodes().map(function(u){var c=o.node(u),d=o.parent(u),h={v:u};return c!==void 0&&(h.value=c),d!==void 0&&(h.parent=d),h})}function l(o){return o.edges().map(function(u){var c=o.edge(u),d={v:u.v,w:u.w};return u.name!==void 0&&(d.name=u.name),c!==void 0&&(d.value=c),d})}function a(o){var u=new e(o.options).setGraph(o.value);return o.nodes.forEach(function(c){u.setNode(c.v,c.value),c.parent&&u.setParent(c.v,c.parent)}),o.edges.forEach(function(c){u.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),u}return Mh}var Dh,_b;function O5(){if(_b)return Dh;_b=1,Dh=e;function e(t){var r={},l=[],a;function o(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),t.successors(u).forEach(o),t.predecessors(u).forEach(o))}return t.nodes().forEach(function(u){a=[],o(u),a.length&&l.push(a)}),l}return Dh}var Rh,kb;function C_(){if(kb)return Rh;kb=1;class e{constructor(){Ct(this,"_arr",[]);Ct(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var o=this._arr,u=o.length;return a[r]=u,o.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,o=a+1,u=r;a>1,!(l[o].priority1;function r(a,o,u,c){return l(a,String(o),u||t,c||function(d){return a.outEdges(d)})}function l(a,o,u,c){var d={},h=new e,m,p,x=function(b){var w=b.v!==m?b.v:b.w,N=d[w],_=u(b),S=p.distance+_;if(_<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+b+" Weight: "+_);S0&&(m=h.removeMin(),p=d[m],p.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return Oh}var Lh,Nb;function L5(){if(Nb)return Lh;Nb=1;var e=T_();Lh=t;function t(r,l,a){return r.nodes().reduce(function(o,u){return o[u]=e(r,u,l,a),o},{})}return Lh}var Hh,Cb;function j_(){if(Cb)return Hh;Cb=1,Hh=e;function e(t){var r=0,l=[],a={},o=[];function u(c){var d=a[c]={onStack:!0,lowlink:r,index:r++};if(l.push(c),t.successors(c).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(d.lowlink=Math.min(d.lowlink,a[p].index)):(u(p),d.lowlink=Math.min(d.lowlink,a[p].lowlink))}),d.lowlink===d.index){var h=[],m;do m=l.pop(),a[m].onStack=!1,h.push(m);while(c!==m);o.push(h)}}return t.nodes().forEach(function(c){Object.hasOwn(a,c)||u(c)}),o}return Hh}var Bh,Tb;function H5(){if(Tb)return Bh;Tb=1;var e=j_();Bh=t;function t(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return Bh}var Ih,jb;function B5(){if(jb)return Ih;jb=1,Ih=t;var e=()=>1;function t(l,a,o){return r(l,a||e,o||function(u){return l.outEdges(u)})}function r(l,a,o){var u={},c=l.nodes();return c.forEach(function(d){u[d]={},u[d][d]={distance:0},c.forEach(function(h){d!==h&&(u[d][h]={distance:Number.POSITIVE_INFINITY})}),o(d).forEach(function(h){var m=h.v===d?h.w:h.v,p=a(h);u[d][m]={distance:p,predecessor:d}})}),c.forEach(function(d){var h=u[d];c.forEach(function(m){var p=u[m];c.forEach(function(x){var b=p[d],w=h[x],N=p[x],_=b.distance+w.distance;_a.successors(p):p=>a.neighbors(p),d=u==="post"?t:r,h=[],m={};return o.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);d(p,c,m,h)}),h}function t(a,o,u,c){for(var d=[[a,!1]];d.length>0;){var h=d.pop();h[1]?c.push(h[0]):Object.hasOwn(u,h[0])||(u[h[0]]=!0,d.push([h[0],!0]),l(o(h[0]),m=>d.push([m,!1])))}}function r(a,o,u,c){for(var d=[a];d.length>0;){var h=d.pop();Object.hasOwn(u,h)||(u[h]=!0,c.push(h),l(o(h),m=>d.push(m)))}}function l(a,o){for(var u=a.length;u--;)o(a[u],u,a);return a}return $h}var Vh,Db;function q5(){if(Db)return Vh;Db=1;var e=z_();Vh=t;function t(r,l){return e(r,l,"post")}return Vh}var Ph,Rb;function U5(){if(Rb)return Ph;Rb=1;var e=z_();Ph=t;function t(r,l){return e(r,l,"pre")}return Ph}var Gh,Ob;function $5(){if(Ob)return Gh;Ob=1;var e=Um(),t=C_();Gh=r;function r(l,a){var o=new e,u={},c=new t,d;function h(p){var x=p.v===d?p.w:p.v,b=c.priority(x);if(b!==void 0){var w=a(p);w0;){if(d=c.removeMin(),Object.hasOwn(u,d))o.setEdge(d,u[d]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(d).forEach(h)}return o}return Gh}var Fh,Lb;function V5(){return Lb||(Lb=1,Fh={components:O5(),dijkstra:T_(),dijkstraAll:L5(),findCycles:H5(),floydWarshall:B5(),isAcyclic:I5(),postorder:q5(),preorder:U5(),prim:$5(),tarjan:j_(),topsort:A_()}),Fh}var Yh,Hb;function Yn(){if(Hb)return Yh;Hb=1;var e=D5();return Yh={Graph:e.Graph,json:R5(),alg:V5(),version:e.version},Yh}var Xh,Bb;function P5(){if(Bb)return Xh;Bb=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,o=a._prev;if(o!==a)return t(o),o}enqueue(a){let o=this._sentinel;a._prev&&a._next&&t(a),a._next=o._next,o._next._prev=a,o._next=a,a._prev=o}toString(){let a=[],o=this._sentinel,u=o._prev;for(;u!==o;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function t(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return Xh=e,Xh}var Qh,Ib;function G5(){if(Ib)return Qh;Ib=1;let e=Yn().Graph,t=P5();Qh=l;let r=()=>1;function l(h,m){if(h.nodeCount()<=1)return[];let p=u(h,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(b=>h.outEdges(b.v,b.w))}function a(h,m,p){let x=[],b=m[m.length-1],w=m[0],N;for(;h.nodeCount();){for(;N=w.dequeue();)o(h,m,p,N);for(;N=b.dequeue();)o(h,m,p,N);if(h.nodeCount()){for(let _=m.length-2;_>0;--_)if(N=m[_].dequeue(),N){x=x.concat(o(h,m,p,N,!0));break}}}return x}function o(h,m,p,x,b){let w=b?[]:void 0;return h.inEdges(x.v).forEach(N=>{let _=h.edge(N),S=h.node(N.v);b&&w.push({v:N.v,w:N.w}),S.out-=_,c(m,p,S)}),h.outEdges(x.v).forEach(N=>{let _=h.edge(N),S=N.w,E=h.node(S);E.in-=_,c(m,p,E)}),h.removeNode(x.v),w}function u(h,m){let p=new e,x=0,b=0;h.nodes().forEach(_=>{p.setNode(_,{v:_,in:0,out:0})}),h.edges().forEach(_=>{let S=p.edge(_.v,_.w)||0,E=m(_),k=S+E;p.setEdge(_.v,_.w,k),b=Math.max(b,p.node(_.v).out+=E),x=Math.max(x,p.node(_.w).in+=E)});let w=d(b+x+3).map(()=>new t),N=x+1;return p.nodes().forEach(_=>{c(w,N,p.node(_))}),{graph:p,buckets:w,zeroIdx:N}}function c(h,m,p){p.out?p.in?h[p.out-p.in+m].enqueue(p):h[h.length-1].enqueue(p):h[0].enqueue(p)}function d(h){const m=[];for(let p=0;p$.setNode(H,R.node(H))),R.edges().forEach(H=>{let B=$.edge(H.v,H.w)||{weight:0,minlen:1},U=R.edge(H);$.setEdge(H.v,H.w,{weight:B.weight+U.weight,minlen:Math.max(B.minlen,U.minlen)})}),$}function l(R){let $=new e({multigraph:R.isMultigraph()}).setGraph(R.graph());return R.nodes().forEach(H=>{R.children(H).length||$.setNode(H,R.node(H))}),R.edges().forEach(H=>{$.setEdge(H,R.edge(H))}),$}function a(R){let $=R.nodes().map(H=>{let B={};return R.outEdges(H).forEach(U=>{B[U.w]=(B[U.w]||0)+R.edge(U).weight}),B});return L(R.nodes(),$)}function o(R){let $=R.nodes().map(H=>{let B={};return R.inEdges(H).forEach(U=>{B[U.v]=(B[U.v]||0)+R.edge(U).weight}),B});return L(R.nodes(),$)}function u(R,$){let H=R.x,B=R.y,U=$.x-H,ee=$.y-B,I=R.width/2,F=R.height/2;if(!U&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let z,G;return Math.abs(ee)*I>Math.abs(U)*F?(ee<0&&(F=-F),z=F*U/ee,G=F):(U<0&&(I=-I),z=I,G=I*ee/U),{x:H+z,y:B+G}}function c(R){let $=A(w(R)+1).map(()=>[]);return R.nodes().forEach(H=>{let B=R.node(H),U=B.rank;U!==void 0&&($[U][B.order]=H)}),$}function d(R){let $=R.nodes().map(B=>{let U=R.node(B).rank;return U===void 0?Number.MAX_VALUE:U}),H=b(Math.min,$);R.nodes().forEach(B=>{let U=R.node(B);Object.hasOwn(U,"rank")&&(U.rank-=H)})}function h(R){let $=R.nodes().map(I=>R.node(I).rank),H=b(Math.min,$),B=[];R.nodes().forEach(I=>{let F=R.node(I).rank-H;B[F]||(B[F]=[]),B[F].push(I)});let U=0,ee=R.graph().nodeRankFactor;Array.from(B).forEach((I,F)=>{I===void 0&&F%ee!==0?--U:I!==void 0&&U&&I.forEach(z=>R.node(z).rank+=U)})}function m(R,$,H,B){let U={width:0,height:0};return arguments.length>=4&&(U.rank=H,U.order=B),t(R,"border",U,$)}function p(R,$=x){const H=[];for(let B=0;Bx){const H=p($);return R.apply(null,H.map(B=>R.apply(null,B)))}else return R.apply(null,$)}function w(R){const H=R.nodes().map(B=>{let U=R.node(B).rank;return U===void 0?Number.MIN_VALUE:U});return b(Math.max,H)}function N(R,$){let H={lhs:[],rhs:[]};return R.forEach(B=>{$(B)?H.lhs.push(B):H.rhs.push(B)}),H}function _(R,$){let H=Date.now();try{return $()}finally{console.log(R+" time: "+(Date.now()-H)+"ms")}}function S(R,$){return $()}let E=0;function k(R){var $=++E;return R+(""+$)}function A(R,$,H=1){$==null&&($=R,R=0);let B=ee=>ee<$;H<0&&(B=ee=>$B[$]),Object.entries(R).reduce((B,[U,ee])=>(B[U]=H(ee,U),B),{})}function L(R,$){return R.reduce((H,B,U)=>(H[B]=$[U],H),{})}return Zh}var Kh,Ub;function F5(){if(Ub)return Kh;Ub=1;let e=G5(),t=jt().uniqueId;Kh={run:r,undo:a};function r(o){(o.graph().acyclicer==="greedy"?e(o,c(o)):l(o)).forEach(d=>{let h=o.edge(d);o.removeEdge(d),h.forwardName=d.name,h.reversed=!0,o.setEdge(d.w,d.v,h,t("rev"))});function c(d){return h=>d.edge(h).weight}}function l(o){let u=[],c={},d={};function h(m){Object.hasOwn(d,m)||(d[m]=!0,c[m]=!0,o.outEdges(m).forEach(p=>{Object.hasOwn(c,p.w)?u.push(p):h(p.w)}),delete c[m])}return o.nodes().forEach(h),u}function a(o){o.edges().forEach(u=>{let c=o.edge(u);if(c.reversed){o.removeEdge(u);let d=c.forwardName;delete c.reversed,delete c.forwardName,o.setEdge(u.w,u.v,c,d)}})}return Kh}var Jh,$b;function Y5(){if($b)return Jh;$b=1;let e=jt();Jh={run:t,undo:l};function t(a){a.graph().dummyChains=[],a.edges().forEach(o=>r(a,o))}function r(a,o){let u=o.v,c=a.node(u).rank,d=o.w,h=a.node(d).rank,m=o.name,p=a.edge(o),x=p.labelRank;if(h===c+1)return;a.removeEdge(o);let b,w,N;for(N=0,++c;c{let u=a.node(o),c=u.edgeLabel,d;for(a.setEdge(u.edgeObj,c);u.dummy;)d=a.successors(o)[0],a.removeNode(o),c.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(c.x=u.x,c.y=u.y,c.width=u.width,c.height=u.height),o=d,u=a.node(o)})}return Jh}var Wh,Vb;function xc(){if(Vb)return Wh;Vb=1;const{applyWithChunking:e}=jt();Wh={longestPath:t,slack:r};function t(l){var a={};function o(u){var c=l.node(u);if(Object.hasOwn(a,u))return c.rank;a[u]=!0;let d=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:o(m.w)-l.edge(m).minlen);var h=e(Math.min,d);return h===Number.POSITIVE_INFINITY&&(h=0),c.rank=h}l.sources().forEach(o)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Wh}var ep,Pb;function M_(){if(Pb)return ep;Pb=1;var e=Yn().Graph,t=xc().slack;ep=r;function r(u){var c=new e({directed:!1}),d=u.nodes()[0],h=u.nodeCount();c.setNode(d,{});for(var m,p;l(c,u){var p=m.v,x=h===p?m.w:p;!u.hasNode(x)&&!t(c,m)&&(u.setNode(x,{}),u.setEdge(h,x,{}),d(x))})}return u.nodes().forEach(d),u.nodeCount()}function a(u,c){return c.edges().reduce((h,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=t(c,m)),pc.node(h).rank+=d)}return ep}var tp,Gb;function X5(){if(Gb)return tp;Gb=1;var e=M_(),t=xc().slack,r=xc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,o=jt().simplify;tp=u,u.initLowLimValues=m,u.initCutValues=c,u.calcCutValue=h,u.leaveEdge=x,u.enterEdge=b,u.exchangeEdges=w;function u(E){E=o(E),r(E);var k=e(E);m(k),c(k,E);for(var A,M;A=x(k);)M=b(k,E,A),w(k,E,A,M)}function c(E,k){var A=a(E,E.nodes());A=A.slice(0,A.length-1),A.forEach(M=>d(E,k,M))}function d(E,k,A){var M=E.node(A),j=M.parent;E.edge(A,j).cutvalue=h(E,k,A)}function h(E,k,A){var M=E.node(A),j=M.parent,L=!0,R=k.edge(A,j),$=0;return R||(L=!1,R=k.edge(j,A)),$=R.weight,k.nodeEdges(A).forEach(H=>{var B=H.v===A,U=B?H.w:H.v;if(U!==j){var ee=B===L,I=k.edge(H).weight;if($+=ee?I:-I,_(E,A,U)){var F=E.edge(A,U).cutvalue;$+=ee?-F:F}}}),$}function m(E,k){arguments.length<2&&(k=E.nodes()[0]),p(E,{},1,k)}function p(E,k,A,M,j){var L=A,R=E.node(M);return k[M]=!0,E.neighbors(M).forEach($=>{Object.hasOwn(k,$)||(A=p(E,k,A,$,M))}),R.low=L,R.lim=A++,j?R.parent=j:delete R.parent,A}function x(E){return E.edges().find(k=>E.edge(k).cutvalue<0)}function b(E,k,A){var M=A.v,j=A.w;k.hasEdge(M,j)||(M=A.w,j=A.v);var L=E.node(M),R=E.node(j),$=L,H=!1;L.lim>R.lim&&($=R,H=!0);var B=k.edges().filter(U=>H===S(E,E.node(U.v),$)&&H!==S(E,E.node(U.w),$));return B.reduce((U,ee)=>t(k,ee)!k.node(j).parent),M=l(E,A);M=M.slice(1),M.forEach(j=>{var L=E.node(j).parent,R=k.edge(j,L),$=!1;R||(R=k.edge(L,j),$=!0),k.node(j).rank=k.node(L).rank+($?R.minlen:-R.minlen)})}function _(E,k,A){return E.hasEdge(k,A)}function S(E,k,A){return A.low<=k.lim&&k.lim<=A.lim}return tp}var np,Fb;function Q5(){if(Fb)return np;Fb=1;var e=xc(),t=e.longestPath,r=M_(),l=X5();np=a;function a(d){var h=d.graph().ranker;if(h instanceof Function)return h(d);switch(d.graph().ranker){case"network-simplex":c(d);break;case"tight-tree":u(d);break;case"longest-path":o(d);break;case"none":break;default:c(d)}}var o=t;function u(d){t(d),r(d)}function c(d){l(d)}return np}var rp,Yb;function Z5(){if(Yb)return rp;Yb=1,rp=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(o=>{let u=l.node(o),c=u.edgeObj,d=t(l,a,c.v,c.w),h=d.path,m=d.lca,p=0,x=h[p],b=!0;for(;o!==c.w;){if(u=l.node(o),b){for(;(x=h[p])!==m&&l.node(x).maxRankh||m>a[p].lim));for(x=p,p=u;(p=l.parent(p))!==x;)d.push(p);return{path:c.concat(d.reverse()),lca:x}}function r(l){let a={},o=0;function u(c){let d=o;l.children(c).forEach(u),a[c]={low:d,lim:o++}}return l.children().forEach(u),a}return rp}var ip,Xb;function K5(){if(Xb)return ip;Xb=1;let e=jt();ip={run:t,cleanup:o};function t(u){let c=e.addDummyNode(u,"root",{},"_root"),d=l(u),h=Object.values(d),m=e.applyWithChunking(Math.max,h)-1,p=2*m+1;u.graph().nestingRoot=c,u.edges().forEach(b=>u.edge(b).minlen*=p);let x=a(u)+1;u.children().forEach(b=>r(u,c,p,x,m,d,b)),u.graph().nodeRankFactor=p}function r(u,c,d,h,m,p,x){let b=u.children(x);if(!b.length){x!==c&&u.setEdge(c,x,{weight:0,minlen:d});return}let w=e.addBorderNode(u,"_bt"),N=e.addBorderNode(u,"_bb"),_=u.node(x);u.setParent(w,x),_.borderTop=w,u.setParent(N,x),_.borderBottom=N,b.forEach(S=>{r(u,c,d,h,m,p,S);let E=u.node(S),k=E.borderTop?E.borderTop:S,A=E.borderBottom?E.borderBottom:S,M=E.borderTop?h:2*h,j=k!==A?1:m-p[x]+1;u.setEdge(w,k,{weight:M,minlen:j,nestingEdge:!0}),u.setEdge(A,N,{weight:M,minlen:j,nestingEdge:!0})}),u.parent(x)||u.setEdge(c,w,{weight:0,minlen:m+p[x]})}function l(u){var c={};function d(h,m){var p=u.children(h);p&&p.length&&p.forEach(x=>d(x,m+1)),c[h]=m}return u.children().forEach(h=>d(h,1)),c}function a(u){return u.edges().reduce((c,d)=>c+u.edge(d).weight,0)}function o(u){var c=u.graph();u.removeNode(c.nestingRoot),delete c.nestingRoot,u.edges().forEach(d=>{var h=u.edge(d);h.nestingEdge&&u.removeEdge(d)})}return ip}var lp,Qb;function J5(){if(Qb)return lp;Qb=1;let e=jt();lp=t;function t(l){function a(o){let u=l.children(o),c=l.node(o);if(u.length&&u.forEach(a),Object.hasOwn(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(let d=c.minRank,h=c.maxRank+1;dl(d.node(h))),d.edges().forEach(h=>l(d.edge(h)))}function l(d){let h=d.width;d.width=d.height,d.height=h}function a(d){d.nodes().forEach(h=>o(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(o),Object.hasOwn(m,"y")&&o(m)})}function o(d){d.y=-d.y}function u(d){d.nodes().forEach(h=>c(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(c),Object.hasOwn(m,"x")&&c(m)})}function c(d){let h=d.x;d.x=d.y,d.y=h}return ap}var op,Kb;function e4(){if(Kb)return op;Kb=1;let e=jt();op=t;function t(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),o=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,o),c=e.range(u+1).map(()=>[]);function d(m){if(l[m])return;l[m]=!0;let p=r.node(m);c[p.rank].push(m),r.successors(m).forEach(d)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(d),c}return op}var sp,Jb;function t4(){if(Jb)return sp;Jb=1;let e=jt().zipObject;sp=t;function t(l,a){let o=0;for(let u=1;ub)),c=a.flatMap(x=>l.outEdges(x).map(b=>({pos:u[b.w],weight:l.edge(b).weight})).sort((b,w)=>b.pos-w.pos)),d=1;for(;d{let b=x.pos+d;m[b]+=x.weight;let w=0;for(;b>0;)b%2&&(w+=m[b+1]),b=b-1>>1,m[b]+=x.weight;p+=x.weight*w}),p}return sp}var up,Wb;function n4(){if(Wb)return up;Wb=1,up=e;function e(t,r=[]){return r.map(l=>{let a=t.inEdges(l);if(a.length){let o=a.reduce((u,c)=>{let d=t.edge(c),h=t.node(c.v);return{sum:u.sum+d.weight*h.order,weight:u.weight+d.weight}},{sum:0,weight:0});return{v:l,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:l}})}return up}var cp,e1;function r4(){if(e1)return cp;e1=1;let e=jt();cp=t;function t(a,o){let u={};a.forEach((d,h)=>{let m=u[d.v]={indegree:0,in:[],out:[],vs:[d.v],i:h};d.barycenter!==void 0&&(m.barycenter=d.barycenter,m.weight=d.weight)}),o.edges().forEach(d=>{let h=u[d.v],m=u[d.w];h!==void 0&&m!==void 0&&(m.indegree++,h.out.push(u[d.w]))});let c=Object.values(u).filter(d=>!d.indegree);return r(c)}function r(a){let o=[];function u(d){return h=>{h.merged||(h.barycenter===void 0||d.barycenter===void 0||h.barycenter>=d.barycenter)&&l(d,h)}}function c(d){return h=>{h.in.push(d),--h.indegree===0&&a.push(h)}}for(;a.length;){let d=a.pop();o.push(d),d.in.reverse().forEach(u(d)),d.out.forEach(c(d))}return o.filter(d=>!d.merged).map(d=>e.pick(d,["vs","i","barycenter","weight"]))}function l(a,o){let u=0,c=0;a.weight&&(u+=a.barycenter*a.weight,c+=a.weight),o.weight&&(u+=o.barycenter*o.weight,c+=o.weight),a.vs=o.vs.concat(a.vs),a.barycenter=u/c,a.weight=c,a.i=Math.min(o.i,a.i),o.merged=!0}return cp}var fp,t1;function i4(){if(t1)return fp;t1=1;let e=jt();fp=t;function t(a,o){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),c=u.lhs,d=u.rhs.sort((w,N)=>N.i-w.i),h=[],m=0,p=0,x=0;c.sort(l(!!o)),x=r(h,d,x),c.forEach(w=>{x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,x=r(h,d,x)});let b={vs:h.flat(!0)};return p&&(b.barycenter=m/p,b.weight=p),b}function r(a,o,u){let c;for(;o.length&&(c=o[o.length-1]).i<=u;)o.pop(),a.push(c.vs),u++;return u}function l(a){return(o,u)=>o.barycenteru.barycenter?1:a?u.i-o.i:o.i-u.i}return fp}var dp,n1;function l4(){if(n1)return dp;n1=1;let e=n4(),t=r4(),r=i4();dp=l;function l(u,c,d,h){let m=u.children(c),p=u.node(c),x=p?p.borderLeft:void 0,b=p?p.borderRight:void 0,w={};x&&(m=m.filter(E=>E!==x&&E!==b));let N=e(u,m);N.forEach(E=>{if(u.children(E.v).length){let k=l(u,E.v,d,h);w[E.v]=k,Object.hasOwn(k,"barycenter")&&o(E,k)}});let _=t(N,d);a(_,w);let S=r(_,h);if(x&&(S.vs=[x,S.vs,b].flat(!0),u.predecessors(x).length)){let E=u.node(u.predecessors(x)[0]),k=u.node(u.predecessors(b)[0]);Object.hasOwn(S,"barycenter")||(S.barycenter=0,S.weight=0),S.barycenter=(S.barycenter*S.weight+E.order+k.order)/(S.weight+2),S.weight+=2}return S}function a(u,c){u.forEach(d=>{d.vs=d.vs.flatMap(h=>c[h]?c[h].vs:h)})}function o(u,c){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+c.barycenter*c.weight)/(u.weight+c.weight),u.weight+=c.weight):(u.barycenter=c.barycenter,u.weight=c.weight)}return dp}var hp,r1;function a4(){if(r1)return hp;r1=1;let e=Yn().Graph,t=jt();hp=r;function r(a,o,u,c){c||(c=a.nodes());let d=l(a),h=new e({compound:!0}).setGraph({root:d}).setDefaultNodeLabel(m=>a.node(m));return c.forEach(m=>{let p=a.node(m),x=a.parent(m);(p.rank===o||p.minRank<=o&&o<=p.maxRank)&&(h.setNode(m),h.setParent(m,x||d),a[u](m).forEach(b=>{let w=b.v===m?b.w:b.v,N=h.edge(w,m),_=N!==void 0?N.weight:0;h.setEdge(w,m,{weight:a.edge(b).weight+_})}),Object.hasOwn(p,"minRank")&&h.setNode(m,{borderLeft:p.borderLeft[o],borderRight:p.borderRight[o]}))}),h}function l(a){for(var o;a.hasNode(o=t.uniqueId("_root")););return o}return hp}var pp,i1;function o4(){if(i1)return pp;i1=1,pp=e;function e(t,r,l){let a={},o;l.forEach(u=>{let c=t.parent(u),d,h;for(;c;){if(d=t.parent(c),d?(h=a[d],a[d]=c):(h=o,o=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return pp}var mp,l1;function s4(){if(l1)return mp;l1=1;let e=e4(),t=t4(),r=l4(),l=a4(),a=o4(),o=Yn().Graph,u=jt();mp=c;function c(p,x){if(x&&typeof x.customOrder=="function"){x.customOrder(p,c);return}let b=u.maxRank(p),w=d(p,u.range(1,b+1),"inEdges"),N=d(p,u.range(b-1,-1,-1),"outEdges"),_=e(p);if(m(p,_),x&&x.disableOptimalOrderHeuristic)return;let S=Number.POSITIVE_INFINITY,E;for(let k=0,A=0;A<4;++k,++A){h(k%2?w:N,k%4>=2),_=u.buildLayerMatrix(p);let M=t(p,_);M{w.has(_)||w.set(_,[]),w.get(_).push(S)};for(const _ of p.nodes()){const S=p.node(_);if(typeof S.rank=="number"&&N(S.rank,_),typeof S.minRank=="number"&&typeof S.maxRank=="number")for(let E=S.minRank;E<=S.maxRank;E++)E!==S.rank&&N(E,_)}return x.map(function(_){return l(p,_,b,w.get(_)||[])})}function h(p,x){let b=new o;p.forEach(function(w){let N=w.graph().root,_=r(w,N,b,x);_.vs.forEach((S,E)=>w.node(S).order=E),a(w,b,_.vs)})}function m(p,x){Object.values(x).forEach(b=>b.forEach((w,N)=>p.node(w).order=N))}return mp}var gp,a1;function u4(){if(a1)return gp;a1=1;let e=Yn().Graph,t=jt();gp={positionX:b,findType1Conflicts:r,findType2Conflicts:l,addConflict:o,hasConflict:u,verticalAlignment:c,horizontalCompaction:d,alignCoordinates:p,findSmallestWidthAlignment:m,balance:x};function r(_,S){let E={};function k(A,M){let j=0,L=0,R=A.length,$=M[M.length-1];return M.forEach((H,B)=>{let U=a(_,H),ee=U?_.node(U).order:R;(U||H===$)&&(M.slice(L,B+1).forEach(I=>{_.predecessors(I).forEach(F=>{let z=_.node(F),G=z.order;(G{H=M[B],_.node(H).dummy&&_.predecessors(H).forEach(U=>{let ee=_.node(U);ee.dummy&&(ee.order$)&&o(E,U,H)})})}function A(M,j){let L=-1,R,$=0;return j.forEach((H,B)=>{if(_.node(H).dummy==="border"){let U=_.predecessors(H);U.length&&(R=_.node(U[0]).order,k(j,$,B,L,R),$=B,L=R)}k(j,$,j.length,R,M.length)}),j}return S.length&&S.reduce(A),E}function a(_,S){if(_.node(S).dummy)return _.predecessors(S).find(E=>_.node(E).dummy)}function o(_,S,E){if(S>E){let A=S;S=E,E=A}let k=_[S];k||(_[S]=k={}),k[E]=!0}function u(_,S,E){if(S>E){let k=S;S=E,E=k}return!!_[S]&&Object.hasOwn(_[S],E)}function c(_,S,E,k){let A={},M={},j={};return S.forEach(L=>{L.forEach((R,$)=>{A[R]=R,M[R]=R,j[R]=$})}),S.forEach(L=>{let R=-1;L.forEach($=>{let H=k($);if(H.length){H=H.sort((U,ee)=>j[U]-j[ee]);let B=(H.length-1)/2;for(let U=Math.floor(B),ee=Math.ceil(B);U<=ee;++U){let I=H[U];M[$]===$&&RMath.max(U,M[ee.v]+j.edge(ee)),0)}function H(B){let U=j.outEdges(B).reduce((I,F)=>Math.min(I,M[F.w]-j.edge(F)),Number.POSITIVE_INFINITY),ee=_.node(B);U!==Number.POSITIVE_INFINITY&&ee.borderType!==L&&(M[B]=Math.max(M[B],U))}return R($,j.predecessors.bind(j)),R(H,j.successors.bind(j)),Object.keys(k).forEach(B=>M[B]=M[E[B]]),M}function h(_,S,E,k){let A=new e,M=_.graph(),j=w(M.nodesep,M.edgesep,k);return S.forEach(L=>{let R;L.forEach($=>{let H=E[$];if(A.setNode(H),R){var B=E[R],U=A.edge(B,H);A.setEdge(B,H,Math.max(j(_,$,R),U||0))}R=$})}),A}function m(_,S){return Object.values(S).reduce((E,k)=>{let A=Number.NEGATIVE_INFINITY,M=Number.POSITIVE_INFINITY;Object.entries(k).forEach(([L,R])=>{let $=N(_,L)/2;A=Math.max(R+$,A),M=Math.min(R-$,M)});const j=A-M;return j{["l","r"].forEach(j=>{let L=M+j,R=_[L];if(R===S)return;let $=Object.values(R),H=k-t.applyWithChunking(Math.min,$);j!=="l"&&(H=A-t.applyWithChunking(Math.max,$)),H&&(_[L]=t.mapValues(R,B=>B+H))})})}function x(_,S){return t.mapValues(_.ul,(E,k)=>{if(S)return _[S.toLowerCase()][k];{let A=Object.values(_).map(M=>M[k]).sort((M,j)=>M-j);return(A[1]+A[2])/2}})}function b(_){let S=t.buildLayerMatrix(_),E=Object.assign(r(_,S),l(_,S)),k={},A;["u","d"].forEach(j=>{A=j==="u"?S:Object.values(S).reverse(),["l","r"].forEach(L=>{L==="r"&&(A=A.map(B=>Object.values(B).reverse()));let R=(j==="u"?_.predecessors:_.successors).bind(_),$=c(_,A,E,R),H=d(_,A,$.root,$.align,L==="r");L==="r"&&(H=t.mapValues(H,B=>-B)),k[j+L]=H})});let M=m(_,k);return p(k,M),x(k,_.graph().align)}function w(_,S,E){return(k,A,M)=>{let j=k.node(A),L=k.node(M),R=0,$;if(R+=j.width/2,Object.hasOwn(j,"labelpos"))switch(j.labelpos.toLowerCase()){case"l":$=-j.width/2;break;case"r":$=j.width/2;break}if($&&(R+=E?$:-$),$=0,R+=(j.dummy?S:_)/2,R+=(L.dummy?S:_)/2,R+=L.width/2,Object.hasOwn(L,"labelpos"))switch(L.labelpos.toLowerCase()){case"l":$=L.width/2;break;case"r":$=-L.width/2;break}return $&&(R+=E?$:-$),$=0,R}}function N(_,S){return _.node(S).width}return gp}var xp,o1;function c4(){if(o1)return xp;o1=1;let e=jt(),t=u4().positionX;xp=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(t(a)).forEach(([o,u])=>a.node(o).x=u)}function l(a){let o=e.buildLayerMatrix(a),u=a.graph().ranksep,c=0;o.forEach(d=>{const h=d.reduce((m,p)=>{const x=a.node(p).height;return m>x?m:x},0);d.forEach(m=>a.node(m).y=c+h/2),c+=h+u})}return xp}var yp,s1;function f4(){if(s1)return yp;s1=1;let e=F5(),t=Y5(),r=Q5(),l=jt().normalizeRanks,a=Z5(),o=jt().removeEmptyRanks,u=K5(),c=J5(),d=W5(),h=s4(),m=c4(),p=jt(),x=Yn().Graph;yp=b;function b(C,P){let X=P&&P.debugTiming?p.time:p.notime;X("layout",()=>{let J=X(" buildLayoutGraph",()=>R(C));X(" runLayout",()=>w(J,X,P)),X(" updateInputGraph",()=>N(C,J))})}function w(C,P,X){P(" makeSpaceForEdgeLabels",()=>$(C)),P(" removeSelfEdges",()=>Q(C)),P(" acyclic",()=>e.run(C)),P(" nestingGraph.run",()=>u.run(C)),P(" rank",()=>r(p.asNonCompoundGraph(C))),P(" injectEdgeLabelProxies",()=>H(C)),P(" removeEmptyRanks",()=>o(C)),P(" nestingGraph.cleanup",()=>u.cleanup(C)),P(" normalizeRanks",()=>l(C)),P(" assignRankMinMax",()=>B(C)),P(" removeEdgeLabelProxies",()=>U(C)),P(" normalize.run",()=>t.run(C)),P(" parentDummyChains",()=>a(C)),P(" addBorderSegments",()=>c(C)),P(" order",()=>h(C,X)),P(" insertSelfEdges",()=>K(C)),P(" adjustCoordinateSystem",()=>d.adjust(C)),P(" position",()=>m(C)),P(" positionSelfEdges",()=>D(C)),P(" removeBorderNodes",()=>G(C)),P(" normalize.undo",()=>t.undo(C)),P(" fixupEdgeLabelCoords",()=>F(C)),P(" undoCoordinateSystem",()=>d.undo(C)),P(" translateGraph",()=>ee(C)),P(" assignNodeIntersects",()=>I(C)),P(" reversePoints",()=>z(C)),P(" acyclic.undo",()=>e.undo(C))}function N(C,P){C.nodes().forEach(X=>{let J=C.node(X),ne=P.node(X);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,P.children(X).length&&(J.width=ne.width,J.height=ne.height))}),C.edges().forEach(X=>{let J=C.edge(X),ne=P.edge(X);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),C.graph().width=P.graph().width,C.graph().height=P.graph().height}let _=["nodesep","edgesep","ranksep","marginx","marginy"],S={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},E=["acyclicer","ranker","rankdir","align"],k=["width","height","rank"],A={width:0,height:0},M=["minlen","weight","width","height","labeloffset"],j={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},L=["labelpos"];function R(C){let P=new x({multigraph:!0,compound:!0}),X=Y(C.graph());return P.setGraph(Object.assign({},S,q(X,_),p.pick(X,E))),C.nodes().forEach(J=>{let ne=Y(C.node(J));const re=q(ne,k);Object.keys(A).forEach(se=>{re[se]===void 0&&(re[se]=A[se])}),P.setNode(J,re),P.setParent(J,C.parent(J))}),C.edges().forEach(J=>{let ne=Y(C.edge(J));P.setEdge(J,Object.assign({},j,q(ne,M),p.pick(ne,L)))}),P}function $(C){let P=C.graph();P.ranksep/=2,C.edges().forEach(X=>{let J=C.edge(X);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(P.rankdir==="TB"||P.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function H(C){C.edges().forEach(P=>{let X=C.edge(P);if(X.width&&X.height){let J=C.node(P.v),re={rank:(C.node(P.w).rank-J.rank)/2+J.rank,e:P};p.addDummyNode(C,"edge-proxy",re,"_ep")}})}function B(C){let P=0;C.nodes().forEach(X=>{let J=C.node(X);J.borderTop&&(J.minRank=C.node(J.borderTop).rank,J.maxRank=C.node(J.borderBottom).rank,P=Math.max(P,J.maxRank))}),C.graph().maxRank=P}function U(C){C.nodes().forEach(P=>{let X=C.node(P);X.dummy==="edge-proxy"&&(C.edge(X.e).labelRank=X.rank,C.removeNode(P))})}function ee(C){let P=Number.POSITIVE_INFINITY,X=0,J=Number.POSITIVE_INFINITY,ne=0,re=C.graph(),se=re.marginx||0,xe=re.marginy||0;function be(ye){let pe=ye.x,_e=ye.y,ze=ye.width,Te=ye.height;P=Math.min(P,pe-ze/2),X=Math.max(X,pe+ze/2),J=Math.min(J,_e-Te/2),ne=Math.max(ne,_e+Te/2)}C.nodes().forEach(ye=>be(C.node(ye))),C.edges().forEach(ye=>{let pe=C.edge(ye);Object.hasOwn(pe,"x")&&be(pe)}),P-=se,J-=xe,C.nodes().forEach(ye=>{let pe=C.node(ye);pe.x-=P,pe.y-=J}),C.edges().forEach(ye=>{let pe=C.edge(ye);pe.points.forEach(_e=>{_e.x-=P,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=P),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=X-P+se,re.height=ne-J+xe}function I(C){C.edges().forEach(P=>{let X=C.edge(P),J=C.node(P.v),ne=C.node(P.w),re,se;X.points?(re=X.points[0],se=X.points[X.points.length-1]):(X.points=[],re=ne,se=J),X.points.unshift(p.intersectRect(J,re)),X.points.push(p.intersectRect(ne,se))})}function F(C){C.edges().forEach(P=>{let X=C.edge(P);if(Object.hasOwn(X,"x"))switch((X.labelpos==="l"||X.labelpos==="r")&&(X.width-=X.labeloffset),X.labelpos){case"l":X.x-=X.width/2+X.labeloffset;break;case"r":X.x+=X.width/2+X.labeloffset;break}})}function z(C){C.edges().forEach(P=>{let X=C.edge(P);X.reversed&&X.points.reverse()})}function G(C){C.nodes().forEach(P=>{if(C.children(P).length){let X=C.node(P),J=C.node(X.borderTop),ne=C.node(X.borderBottom),re=C.node(X.borderLeft[X.borderLeft.length-1]),se=C.node(X.borderRight[X.borderRight.length-1]);X.width=Math.abs(se.x-re.x),X.height=Math.abs(ne.y-J.y),X.x=re.x+X.width/2,X.y=J.y+X.height/2}}),C.nodes().forEach(P=>{C.node(P).dummy==="border"&&C.removeNode(P)})}function Q(C){C.edges().forEach(P=>{if(P.v===P.w){var X=C.node(P.v);X.selfEdges||(X.selfEdges=[]),X.selfEdges.push({e:P,label:C.edge(P)}),C.removeEdge(P)}})}function K(C){var P=p.buildLayerMatrix(C);P.forEach(X=>{var J=0;X.forEach((ne,re)=>{var se=C.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(xe=>{p.addDummyNode(C,"selfedge",{width:xe.label.width,height:xe.label.height,rank:se.rank,order:re+ ++J,e:xe.e,label:xe.label},"_se")}),delete se.selfEdges})})}function D(C){C.nodes().forEach(P=>{var X=C.node(P);if(X.dummy==="selfedge"){var J=C.node(X.e.v),ne=J.x+J.width/2,re=J.y,se=X.x-ne,xe=J.height/2;C.setEdge(X.e,X.label),C.removeNode(P),X.label.points=[{x:ne+2*se/3,y:re-xe},{x:ne+5*se/6,y:re-xe},{x:ne+se,y:re},{x:ne+5*se/6,y:re+xe},{x:ne+2*se/3,y:re+xe}],X.label.x=X.x,X.label.y=X.y}})}function q(C,P){return p.mapValues(p.pick(C,P),Number)}function Y(C){var P={};return C&&Object.entries(C).forEach(([X,J])=>{typeof X=="string"&&(X=X.toLowerCase()),P[X]=J}),P}return yp}var vp,u1;function d4(){if(u1)return vp;u1=1;let e=jt(),t=Yn().Graph;vp={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),o=new t({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{o.setNode(u,{label:u}),o.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>o.setEdge(u.v,u.w,{},u.name)),a.forEach((u,c)=>{let d="layer"+c;o.setNode(d,{rank:"same"}),u.reduce((h,m)=>(o.setEdge(h,m,{style:"invis"}),m))}),o}return vp}var bp,c1;function h4(){return c1||(c1=1,bp="1.1.8"),bp}var wp,f1;function p4(){return f1||(f1=1,wp={graphlib:Yn(),layout:f4(),debug:d4(),util:{time:jt().time,notime:jt().notime},version:h4()}),wp}var m4=p4();const d1=Qo(m4),Ao=200,la=56,h1=20,p1=40,g4=20,m1=12;function x4(e,t,r,l,a,o,u,c){const d=[],h=[],m=new Set,p=new Set,x=new Map;for(const E of r)for(const k of E.agents)p.add(k),x.set(k,E.name);for(const E of r){const k=a[E.name],A=E.agents.length,M=Ao+h1*2,j=p1+A*la+(A-1)*m1+g4;d.push({id:E.name,type:"groupNode",position:{x:0,y:0},data:{label:E.name,type:"parallel_group",status:(k==null?void 0:k.status)||"pending",groupName:E.name,progress:o[E.name]},style:{width:M,height:j}});for(let L=0;L$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}const w=new Set(d.map(E=>E.id)),N=new Map;for(const E of d)E.parentId&&N.set(E.id,E.parentId);const _=new Map;for(const E of t){const k=N.get(E.from)??E.from,A=N.get(E.to)??E.to;if(!w.has(k)||!w.has(A)||k===A)continue;const M=`${k}->${A}`,j=_.get(M);if(j){j.when!==E.when&&(h[j.idx].data={when:void 0});continue}const L=h.length;_.set(M,{when:E.when,idx:L});const R=`${M}${E.when?`[${E.when}]`:""}`;h.push({id:R,source:k,target:A,type:"animatedEdge",data:{when:E.when},animated:!1})}const S=y4(d,h,"$start");return v4(d,h,S),{nodes:d,edges:h}}function y4(e,t,r){const l=new Set(e.filter(h=>!h.parentId).map(h=>h.id)),a=new Map;for(const h of t)!l.has(h.source)||!l.has(h.target)||(a.has(h.source)||a.set(h.source,[]),a.get(h.source).push({target:h.target,edgeId:h.id}));for(const h of a.values())h.sort((m,p)=>m.targetp.target?1:0);const o=new Set,u=new Set,c=new Set,d=h=>{c.add(h),u.add(h);for(const{target:m,edgeId:p}of a.get(h)??[])u.has(m)?o.add(p):c.has(m)||d(m);u.delete(h)};l.has(r)&&d(r);for(const h of[...a.keys()].sort())c.has(h)||d(h);return o}function v4(e,t,r){var a,o,u,c;const l=new d1.graphlib.Graph;l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const d of e){if(d.parentId)continue;const h=d.type==="groupNode",m=h&&((a=d.style)==null?void 0:a.width)||Ao,p=h&&((o=d.style)==null?void 0:o.height)||la;l.setNode(d.id,{width:m,height:p})}for(const d of t)!l.hasNode(d.source)||!l.hasNode(d.target)||(r.has(d.id)?l.setEdge(d.target,d.source):l.setEdge(d.source,d.target));d1.layout(l);for(const d of e){if(d.parentId)continue;const h=l.node(d.id);if(!h)continue;const m=d.type==="groupNode",p=m&&((u=d.style)==null?void 0:u.width)||Ao,x=m&&((c=d.style)==null?void 0:c.height)||la;d.position={x:h.x-p/2,y:h.y-x/2}}}const Fe={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},b4=70,g1=90;function Bc({data:e,children:t}){const[r,l]=V.useState(!1),a=V.useRef(null),o=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),c=Fe[e.status]||Fe.pending;return y.jsxs("div",{className:"relative",onMouseEnter:o,onMouseLeave:u,children:[t,r&&y.jsxs("div",{className:He("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[y.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),y.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[y.jsxs("div",{className:"flex items-center gap-1.5",children:[y.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:c}}),y.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&y.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),y.jsx("div",{className:"h-px bg-[var(--border)]"}),y.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),y.jsx("span",{className:"text-[var(--text)] font-mono",children:Jt(e.elapsed)})]}),e.model&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),y.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),y.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Pn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&y.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Pn(e.inputTokens),"↑ ",Pn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),y.jsx("span",{className:"text-[var(--text)] font-mono",children:yi(e.costUsd)})]}),e.exitCode!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),y.jsx("span",{className:He("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),y.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&y.jsxs(y.Fragment,{children:[y.jsx("div",{className:"h-px bg-[var(--border)]"}),y.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&y.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),y.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const w4=V.memo(function({data:t,id:r,selected:l}){var L;const a=t,o=ol(),c=((L=o[r])==null?void 0:L.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=o[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.model,x=h==null?void 0:h.tokens,b=h==null?void 0:h.input_tokens,w=h==null?void 0:h.output_tokens,N=h==null?void 0:h.cost_usd,_=h==null?void 0:h.iteration,S=h==null?void 0:h.error_type,E=h==null?void 0:h.error_message,k=h==null?void 0:h.context_pct,A=S4(r,c),M=_4(c),j=(()=>{if(c==="failed"&&E)return{text:E.length>40?E.slice(0,37)+"...":E,className:"text-red-400"};if(c==="running")return{text:A,className:"text-[var(--text-muted)]"};if(c==="completed"){const R=[];return m!=null&&R.push(Jt(m)),x!=null&&R.push(`${Pn(x)} tok`),N!=null&&R.push(yi(N)),{text:R.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,elapsed:m,model:p,tokens:x,inputTokens:b,outputTokens:w,costUsd:N,iteration:_,errorType:S,errorMessage:E},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",M),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(sN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsxs("div",{className:"flex items-center gap-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_!=null&&_>1&&y.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${d}25`,color:d},children:["x",_]})]}),j.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",j.className),children:j.text})]}),k!=null&&y.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:y.jsx("div",{className:He("h-full transition-all duration-500",k>=g1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(k,100)}%`,backgroundColor:k>=g1?"#ef4444":k>=b4?"#f59e0b":"#22c55e"}})})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function S4(e,t){var d;const r=(d=ol()[e])==null?void 0:d.startedAt,l=fe(h=>h.replayMode),a=fe(h=>h.lastEventTime),[o,u]=V.useState("0.0s"),c=V.useRef(null);return V.useEffect(()=>{if(t==="running"){if(l){c.current&&clearInterval(c.current);const p=r??a??0;u(Jt((a??p)-p));return}const h=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-h)/1e3;u(Jt(p))};return m(),c.current=setInterval(m,1e3),()=>{c.current&&clearInterval(c.current)}}else c.current&&clearInterval(c.current)},[t,r,l,a]),o}function _4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const k4=V.memo(function({data:t,id:r,selected:l}){var S;const a=t,o=ol(),c=((S=o[r])==null?void 0:S.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=o[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.exit_code,x=h==null?void 0:h.error_type,b=h==null?void 0:h.error_message,w=E4(r,c),N=N4(c),_=(()=>{if(c==="failed"&&b)return{text:b.length>40?b.slice(0,37)+"...":b,className:"text-red-400"};if(c==="running")return{text:w,className:"text-[var(--text-muted)]"};if(c==="completed"){const E=[];return m!=null&&E.push(Jt(m)),p!=null&&E.push(`exit ${p}`),{text:E.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,elapsed:m,exitCode:p,errorType:x,errorMessage:b},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",N),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(SN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",_.className),children:_.text})]})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function E4(e,t){var d;const r=(d=ol()[e])==null?void 0:d.startedAt,l=fe(h=>h.replayMode),a=fe(h=>h.lastEventTime),[o,u]=V.useState("0.0s"),c=V.useRef(null);return V.useEffect(()=>{if(t==="running"){if(l){c.current&&clearInterval(c.current);const p=r??a??0;u(Jt((a??p)-p));return}const h=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-h)/1e3;u(Jt(p))};return m(),c.current=setInterval(m,1e3),()=>{c.current&&clearInterval(c.current)}}else c.current&&clearInterval(c.current)},[t,r,l,a]),o}function N4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const C4=V.memo(function({data:t,id:r,selected:l}){var p,x;const a=t,o=ol(),c=((p=o[r])==null?void 0:p.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=(x=o[r])==null?void 0:x.selected_option,m=T4(c);return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,selectedOption:h},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="waiting"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(wN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),c==="waiting"&&y.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),c==="completed"&&h&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:h})]})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function T4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const j4=V.memo(function({data:t,id:r,selected:l}){var _;const a=t,u=a.type==="for_each_group"?vN:gN,c=a.progress,m=((_=ol()[r])==null?void 0:_.status)||a.status||"pending",p=Fe[m]||Fe.pending,x=A4(m),b=c?`${c.completed+c.failed}/${c.total}${c.failed>0?` (${c.failed} failed)`:""}`:null,w=c&&c.total>0?(c.completed+c.failed)/c.total*100:0,N=c!=null&&c.failed>0;return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsxs("div",{className:He("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",m==="running"&&"shadow-[0_0_16px_var(--running-glow)]",x),style:{borderColor:p,minHeight:"100%"},children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx(u,{className:"w-3.5 h-3.5",style:{color:p}}),y.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),b&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:b}),c&&c.total>0&&m==="running"&&y.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:y.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${w}%`,backgroundColor:N?"var(--failed)":"var(--completed)"}})})]}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function A4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const z4=V.memo(function({data:t,id:r,selected:l}){const a=t,u=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.status})||a.status||"pending",c=Fe[u]||Fe.pending,d=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.elapsed}),h=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.error_message}),m=fe(_=>_.navigateIntoSubworkflow),p=qm(),x=p.some(_=>_.parentAgent===r),b=p.find(_=>_.parentAgent===r),w=b==null?void 0:b.workflowName,N=(()=>{if(u==="failed"&&h)return{text:h.length>35?h.slice(0,32)+"...":h,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const _=[];return w&&_.push(w),d!=null&&_.push(`${d.toFixed(1)}s`),{text:_.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:u,elapsed:d,errorType:void 0,errorMessage:h,iteration:void 0},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:c,borderStyle:"dashed"},onDoubleClick:_=>{x&&(_.stopPropagation(),m(r))},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${c}20`},children:y.jsx(Sc,{className:"w-3.5 h-3.5",style:{color:c}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("div",{className:"flex items-center gap-1",children:y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),N.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",N.className),children:N.text})]}),x&&y.jsx(Rr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),M4=V.memo(function({data:t,selected:r}){const a=t.status||"pending",o=a==="completed",u=a==="failed",c=!o&&!u,d=o?Fe.completed:u?Fe.failed:Fe.pending;return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",o?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:d},children:o?y.jsx(Yi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?y.jsx(bw,{className:"w-3.5 h-3.5 text-white",fill:"white"}):y.jsx(Yi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:c?Fe.pending:d}})})]})}),D4=V.memo(function({data:t,selected:r}){const a=t.status||"pending",o=Fe[a]||Fe.pending,u=a==="running"||a==="completed";return y.jsxs(y.Fragment,{children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:o},children:y.jsx(xm,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":o}})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),x1="#a78bfa",R4=V.memo(function({data:t,selected:r}){const l=t,a=l.status||"pending",o=a==="running"||a==="completed",u=o?x1:Fe[a]||x1,c=l.parentAgent,d=fe(h=>h.navigateUp);return y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 border-dashed transition-all duration-300 cursor-pointer",o?"bg-[#a78bfa]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",o&&"shadow-[0_0_12px_rgba(167,139,250,0.4)]"),style:{borderColor:u},onDoubleClick:h=>{h.stopPropagation(),d()},children:y.jsx(aN,{className:"w-4 h-4",style:{color:o?"white":u}})}),c&&y.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] whitespace-nowrap",children:["from ",y.jsx("span",{className:"font-medium text-[var(--text)]",children:c})]})]}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),y1="#a78bfa",O4=V.memo(function({data:t,selected:r}){const l=t,a=l.status||"pending",o=a==="completed",u=a==="failed",c=o?y1:u?Fe.failed:y1,d=l.parentAgent,h=fe(m=>m.navigateUp);return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 border-dashed transition-all duration-300 cursor-pointer",o?"bg-[#a78bfa] shadow-[0_0_12px_rgba(167,139,250,0.4)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:c},onDoubleClick:m=>{m.stopPropagation(),h()},children:y.jsx(oN,{className:"w-4 h-4",style:{color:o||u?"white":c}})}),d&&y.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] whitespace-nowrap",children:["return to ",y.jsx("span",{className:"font-medium text-[var(--text)]",children:d})]})]})]})}),L4=V.memo(function({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u,targetPosition:c,source:d,target:h,data:m}){const p=N5(),x=V.useMemo(()=>p.find($=>$.from===d&&$.to===h),[p,d,h]),[b,w,N]=Dm({sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u,targetPosition:c}),_=m==null?void 0:m.when,S=!!_,E=(x==null?void 0:x.state)==="taken",k=(x==null?void 0:x.state)==="highlighted",A=(x==null?void 0:x.state)==="failed";let M="var(--edge-color)",j=2,L;A?(M="var(--failed)",j=3):E?(M="var(--edge-taken)",j=3):k&&(M="var(--edge-active)",j=3),S&&!E&&!k&&!A&&(L="6 3");const R=A?"failed":E?"taken":k?"active":"default";return y.jsxs(y.Fragment,{children:[y.jsx(rs,{id:t,path:b,style:{stroke:M,strokeWidth:j,strokeDasharray:L,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${R})`}),S&&y.jsx(XM,{children:y.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${N}px)`,pointerEvents:"all"},children:y.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:A?"var(--failed)":E?"var(--edge-taken)":"var(--surface)",color:A||E?"var(--bg)":"var(--text-muted)",border:`1px solid ${A?"var(--failed)":E?"var(--edge-taken)":"var(--border)"}`},title:_,children:_})})}),E&&y.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:y.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:b})}),A&&y.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:y.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:b})})]})});function H4(){const e=fe(u=>u.workflowStatus),t=fe(u=>u.workflowFailure),r=fe(u=>u.workflowFailedAgent),l=fe(u=>u.selectNode);if(e!=="failed"||!t)return null;const a=t.message||t.error_type||"Unknown error",o=t.error_type==="TimeoutError";return y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:He("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[y.jsx(ww,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),y.jsxs("div",{className:"flex flex-col min-w-0",children:[y.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),y.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),o&&t.current_agent&&y.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",t.current_agent]}),t.checkpoint_path&&y.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:t.checkpoint_path,children:["Checkpoint: ",t.checkpoint_path.split("/").pop()]})]}),r&&y.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[y.jsx(hN,{className:"w-3 h-3"}),"View"]})]})})}function B4(){const[e,t]=V.useState(!1),r=fe(d=>d.workflowStatus),l=fe(d=>d.totalCost),a=fe(d=>d.totalTokens),o=fe(d=>d.agentsCompleted),u=fe(d=>d.agentsTotal),c=_w();return r!=="completed"||e?null:y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:He("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[y.jsx(cN,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),y.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),y.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[y.jsx("span",{children:c}),u>0&&y.jsxs("span",{children:[o,"/",u," agents"]}),a>0&&y.jsxs("span",{children:[Pn(a)," tok"]}),l>0&&y.jsx("span",{children:yi(l)})]}),y.jsx("button",{onClick:()=>t(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:y.jsx(ll,{className:"w-3.5 h-3.5"})})]})})}const I4={agentNode:w4,scriptNode:k4,gateNode:C4,groupNode:j4,workflowNode:z4,endNode:M4,startNode:D4,ingressNode:R4,egressNode:O4},q4={animatedEdge:L4},U4={type:"animatedEdge"};function $4(){return y.jsx("svg",{style:{position:"absolute",width:0,height:0},children:y.jsxs("defs",{children:[y.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),y.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),y.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),y.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function V4(){const e=C5(),t=fe(z=>z.viewContextPath),r=fe(z=>z.selectNode),l=fe(z=>z.selectedNode),a=fe(z=>z.workflowStatus),o=fe(z=>z.wsStatus),u=fe(z=>z.workflowFailedAgent),c=fe(z=>z.navigateIntoSubworkflow),{agents:d,routes:h,parallelGroups:m,forEachGroups:p,nodes:x,groupProgress:b,entryPoint:w,subworkflowContexts:N,parentAgent:_}=e,[S,E,k]=QM([]),[A,M,j]=ZM([]),L=V.useRef(!1),R=V.useRef(""),$=JSON.stringify(t);V.useEffect(()=>{if(d.length===0){R.current!==$&&(L.current=!1,R.current=$,E([]),M([]));return}if(R.current!==$&&(L.current=!1,R.current=$),L.current)return;L.current=!0;const{nodes:z,edges:G}=x4(d,h,m,p,x,b,w,_);E(z),M(G)},[d,h,m,p,x,b,w,E,M,$,_]),V.useEffect(()=>{L.current&&E(z=>z.map(G=>{const Q=x[G.id];if(!Q)return G;const K=Q.status||"pending",D=G.data.status;if(K!==D){const q={...G.data,status:K};return G.data.groupName&&b[G.data.groupName]&&(q.progress=b[G.data.groupName]),{...G,data:q}}if(G.data.groupName&&b[G.data.groupName]){const q=G.data.progress,Y=b[G.data.groupName];if(Y&&(!q||q.completed!==Y.completed||q.failed!==Y.failed))return{...G,data:{...G.data,progress:Y}}}return G}))},[x,b,E]);const H=V.useCallback((z,G)=>{G.type==="groupNode"&&G.data.type!=="for_each_group"||r(G.id)},[r]),B=V.useCallback((z,G)=>{N.some(K=>K.parentAgent===G.id)&&c(G.id)},[N,c]),U=V.useCallback(()=>{r(null)},[r]),ee=V.useCallback(z=>{var Q;const G=((Q=z.data)==null?void 0:Q.status)||"pending";return Fe[G]??Fe.pending??"#6b7280"},[]);V.useEffect(()=>{E(z=>z.map(G=>({...G,selected:G.id===l})))},[l,E]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const I=a==="pending"&&d.length===0,F=(()=>{switch(o){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return y.jsxs("div",{className:"w-full h-full relative",children:[y.jsx($4,{}),y.jsx(H4,{}),y.jsx(B4,{}),I&&y.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[y.jsxs("div",{className:"relative mb-3",children:[y.jsx(EN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),y.jsx(ca,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),y.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:F})]}),y.jsxs(FM,{nodes:S,edges:A,onNodesChange:k,onEdgesChange:j,onNodeClick:H,onNodeDoubleClick:B,onPaneClick:U,nodeTypes:I4,edgeTypes:q4,defaultEdgeOptions:U4,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[y.jsx(t5,{variant:Mr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),y.jsx(w5,{nodeColor:ee,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),y.jsx(s5,{showInteractive:!1,children:y.jsx(P4,{})}),y.jsx(G4,{}),y.jsx(F4,{viewPathKey:$}),y.jsx(Y4,{})]})]})}function P4(){const{fitView:e}=al(),t=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return y.jsx("button",{onClick:t,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:y.jsx(xN,{className:"w-3.5 h-3.5"})})}function G4(){const{fitView:e}=al();return V.useEffect(()=>{const t=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e]),null}function F4({viewPathKey:e}){const{fitView:t}=al(),r=V.useRef(e);return V.useEffect(()=>{r.current!==e&&(r.current=e,setTimeout(()=>t({padding:.2,duration:300}),50))},[e,t]),null}function Y4(){const e=z5();return e?y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 rounded-lg bg-amber-950/90 border border-amber-500/40 shadow-lg shadow-amber-500/10 backdrop-blur-sm max-w-[560px]",children:[y.jsx("span",{className:"text-xs text-amber-300",children:"⚠"}),y.jsx("span",{className:"text-[11px] text-amber-400/80",children:e.message}),y.jsx("a",{href:window.location.pathname,className:"px-2 py-0.5 rounded text-[10px] font-medium text-amber-300 bg-amber-500/20 hover:bg-amber-500/30 transition-colors flex-shrink-0 ml-1",children:"Root"})]})}):null}function sl({items:e}){const t=e.filter(r=>r.value!=null&&r.value!=="");return t.length===0?null:y.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:t.map(({label:r,value:l})=>y.jsxs("div",{className:"contents",children:[y.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),y.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function D_(e){const t=[];return e.elapsed!=null&&t.push({label:"Elapsed",value:Jt(e.elapsed)}),e.model&&t.push({label:"Model",value:e.model}),e.tokens!=null&&t.push({label:"Tokens",value:Pn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&t.push({label:"In / Out",value:`${Pn(e.input_tokens)} / ${Pn(e.output_tokens)}`}),e.cost_usd!=null&&t.push({label:"Cost",value:yi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&t.push({label:"Context",value:HN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&t.push({label:"Iteration",value:e.iteration}),e.error_type&&t.push({label:"Error",value:e.error_type}),e.error_message&&t.push({label:"Message",value:e.error_message}),t}function nl({output:e,title:t="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,o]=V.useState(r),[u,c]=V.useState(!1),d=Sw(e);if(!d)return null;const h=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(d),c(!0),setTimeout(()=>c(!1),2e3)};return y.jsxs("div",{className:"space-y-1.5",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("button",{onClick:()=>o(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?y.jsx(il,{className:"w-3 h-3"}):y.jsx(Rr,{className:"w-3 h-3"}),t]}),a&&y.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?y.jsx(Yi,{className:"w-3 h-3 text-[var(--completed)]"}):y.jsx(gw,{className:"w-3 h-3"})})]}),a&&y.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:h?y.jsx(X4,{text:d}):d})]})}function X4({text:e}){const t=e.split(/("(?:[^"\\]|\\.)*")/g);return y.jsx(y.Fragment,{children:t.map((r,l)=>{if(l%2===1){const o=t.slice(l+1).join(""),u=/^\s*:/.test(o);return y.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(o,u,c)=>u?`${o}`:c?`${o}`:o);return y.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function $m({activity:e,defaultExpanded:t=!0}){const[r,l]=V.useState(t),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:y.jsxs("div",{className:"space-y-1.5",children:[y.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?y.jsx(il,{className:"w-3 h-3"}):y.jsx(Rr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&y.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((o,u)=>y.jsx(Q4,{entry:o},u))})]})}function Q4({entry:e}){const t={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return y.jsxs("div",{className:He("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[y.jsxs("div",{className:"flex items-start gap-1.5",children:[y.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),y.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),y.jsx("span",{className:He("break-words",t[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&y.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function v1({node:e}){const t=e.status,r=Fe[t]||Fe.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:t}),y.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?y.jsx(b1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:t,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):y.jsxs(y.Fragment,{children:[y.jsx(sl,{items:D_(e)}),e.prompt&&y.jsx(nl,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),y.jsx($m,{activity:e.activity,defaultExpanded:t!=="completed"}),e.output!=null&&y.jsx(nl,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>y.jsx(b1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:t,snapshot:a},a.iteration))]})}function b1({label:e,defaultExpanded:t,snapshot:r,status:l}){const[a,o]=V.useState(t);return y.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[y.jsxs("button",{onClick:()=>o(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?y.jsx(il,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):y.jsx(Rr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),y.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:Z4(r.elapsed)})]}),a&&y.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[y.jsx(sl,{items:D_(r)}),r.prompt&&y.jsx(nl,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),y.jsx($m,{activity:r.activity,defaultExpanded:t&&l!=="completed"}),r.output!=null&&y.jsx(nl,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&y.jsxs("div",{className:"text-xs text-red-400",children:[y.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&y.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function Z4(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const t=Math.floor(e/60),r=(e%60).toFixed(0);return`${t}m ${r}s`}function K4({node:e}){const t=e.status,r=Fe[t]||Fe.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Jt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` + M${R.x},${R.y}h${R.width}v${R.height}h${-R.width}z`,fillRule:"evenodd",pointerEvents:"none"})]})})}N_.displayName="MiniMap";const w5=V.memo(N_),S5=e=>t=>e?`${Math.max(1/t.transform[2],1)}`:void 0,_5={[xa.Line]:"right",[xa.Handle]:"bottom-right"};function k5({nodeId:e,position:t,variant:r=xa.Handle,className:l,style:a=void 0,children:o,color:u,minWidth:c=10,minHeight:d=10,maxWidth:h=Number.MAX_VALUE,maxHeight:m=Number.MAX_VALUE,keepAspectRatio:p=!1,resizeDirection:x,autoScale:b=!0,shouldResize:w,onResizeStart:N,onResize:_,onResizeEnd:S}){const E=i_(),k=typeof e=="string"?e:E,A=mt(),M=V.useRef(null),j=r===xa.Handle,L=Ye(V.useCallback(S5(j&&b),[j,b]),pt),R=V.useRef(null),$=t??_5[r];V.useEffect(()=>{if(!(!M.current||!k))return R.current||(R.current=FA({domNode:M.current,nodeId:k,getStoreItems:()=>{const{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:I,nodeOrigin:F,domNode:z}=A.getState();return{nodeLookup:B,transform:U,snapGrid:ee,snapToGrid:I,nodeOrigin:F,paneDomNode:z}},onChange:(B,U)=>{const{triggerNodeChanges:ee,nodeLookup:I,parentLookup:F,nodeOrigin:z}=A.getState(),G=[],Q={x:B.x,y:B.y},K=I.get(k);if(K&&K.expandParent&&K.parentId){const D=K.origin??z,q=B.width??K.measured.width??0,Y=B.height??K.measured.height??0,C={id:K.id,parentId:K.parentId,rect:{width:q,height:Y,...TS({x:B.x??K.position.x,y:B.y??K.position.y},{width:q,height:Y},K.parentId,I,D)}},P=Bm([C],I,F,z);G.push(...P),Q.x=B.x?Math.max(D[0]*q,B.x):void 0,Q.y=B.y?Math.max(D[1]*Y,B.y):void 0}if(Q.x!==void 0&&Q.y!==void 0){const D={id:k,type:"position",position:{...Q}};G.push(D)}if(B.width!==void 0&&B.height!==void 0){const q={id:k,type:"dimensions",resizing:!0,setAttributes:x?x==="horizontal"?"width":"height":!0,dimensions:{width:B.width,height:B.height}};G.push(q)}for(const D of U){const q={...D,type:"position"};G.push(q)}ee(G)},onEnd:({width:B,height:U})=>{const ee={id:k,type:"dimensions",resizing:!1,dimensions:{width:B,height:U}};A.getState().triggerNodeChanges([ee])}})),R.current.update({controlPosition:$,boundaries:{minWidth:c,minHeight:d,maxWidth:h,maxHeight:m},keepAspectRatio:p,resizeDirection:x,onResizeStart:N,onResize:_,onResizeEnd:S,shouldResize:w}),()=>{var B;(B=R.current)==null||B.destroy()}},[$,c,d,h,m,p,N,_,S,w]);const H=$.split("-");return y.jsx("div",{className:At(["react-flow__resize-control","nodrag",...H,r,l]),ref:M,style:{...a,scale:L,...u&&{[j?"backgroundColor":"borderColor"]:u}},children:o})}V.memo(k5);function is(e,t){if(t.length===0)return null;let r=e[t[0]];for(let l=1;ll.viewContextPath),t=fe(l=>l.nodes),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.nodes)??t},[e,t,r])}function E5(){const e=fe(l=>l.viewContextPath),t=fe(l=>l.groupProgress),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.groupProgress)??t},[e,t,r])}function N5(){const e=fe(l=>l.viewContextPath),t=fe(l=>l.highlightedEdges),r=fe(l=>l.subworkflowContexts);return V.useMemo(()=>{var l;return e.length===0?t:((l=is(r,e))==null?void 0:l.highlightedEdges)??t},[e,t,r])}function qm(){const e=fe(r=>r.viewContextPath),t=fe(r=>r.subworkflowContexts);return V.useMemo(()=>{var r;return e.length===0?t:((r=is(t,e))==null?void 0:r.children)??[]},[e,t])}function C5(){const e=fe(h=>h.viewContextPath),t=fe(h=>h.agents),r=fe(h=>h.routes),l=fe(h=>h.parallelGroups),a=fe(h=>h.forEachGroups),o=fe(h=>h.nodes),u=fe(h=>h.groupProgress),c=fe(h=>h.entryPoint),d=fe(h=>h.subworkflowContexts);return V.useMemo(()=>{if(e.length===0)return{agents:t,routes:r,parallelGroups:l,forEachGroups:a,nodes:o,groupProgress:u,entryPoint:c,subworkflowContexts:d,parentAgent:null};const h=is(d,e);return h?{agents:h.agents,routes:h.routes,parallelGroups:h.parallelGroups,forEachGroups:h.forEachGroups,nodes:h.nodes,groupProgress:h.groupProgress,entryPoint:h.entryPoint,subworkflowContexts:h.children,parentAgent:h.parentAgent}:{agents:t,routes:r,parallelGroups:l,forEachGroups:a,nodes:o,groupProgress:u,entryPoint:c,subworkflowContexts:d,parentAgent:null}},[e,t,r,l,a,o,u,c,d])}function T5(){const e=new URLSearchParams(window.location.search);return{subworkflowPath:e.get("subworkflow"),agent:e.get("agent")}}function yb(e,t){const r=[];let l=e;for(const a of t){let o=-1;for(let u=l.length-1;u>=0;u--)if(l[u].slotKey===a){o=u;break}if(o===-1){for(let u=l.length-1;u>=0;u--)if(l[u].parentAgent===a){o=u;break}}if(o===-1)return{path:r,failedSegment:a};r.push(o),l=l[o].children}return{path:r,failedSegment:null}}function im(e,t,r=[]){const l=[];for(let a=0;ac.name===t)&&l.push({path:u,ctx:o}),o.children.length>0&&l.push(...im(o.children,t,u))}return l}function j5(e){return e.length===0?null:[...e].sort((t,r)=>{const l=t.ctx.status==="running"?1:0,a=r.ctx.status==="running"?1:0;if(l!==a)return a-l;if(t.path.length!==r.path.length)return r.path.length-t.path.length;for(let o=0;o{if(r.current||!u)return;let c=null,d=null,h=null;const m=()=>{if(r.current)return;r.current=!0,c&&clearTimeout(c),d&&clearTimeout(d),h&&h();const b=fe.getState();if(b.agents.length===0){t({message:"Workflow state did not load."});return}let w=[];if(a){const N=a.split("/").filter(Boolean),_=yb(b.subworkflowContexts,N);if(_.failedSegment){const S=N.slice(0,_.path.length).join("/");t({message:`Subworkflow "${_.failedSegment}" not found${S?` (resolved: ${S})`:""}. It may not have started yet.`});return}w=_.path}if(o){if((w.length===0?b.agents:(()=>{let _,S=b.subworkflowContexts;for(const E of w){if(_=S[E],!_)break;S=_.children}return(_==null?void 0:_.agents)??[]})()).some(_=>_.name===o))fe.setState({viewContextPath:w,selectedNode:o});else{const _=im(b.subworkflowContexts,o);if(_.length===0){const E=a||"root workflow";fe.setState({viewContextPath:w,selectedNode:null}),t({message:`Agent "${o}" not found in ${E}.`});return}if(a){const E=_.slice(0,5).map(A=>A5(b.subworkflowContexts,A.path)).join(", "),k=_.length>5?`, and ${_.length-5} more`:"";fe.setState({viewContextPath:w,selectedNode:null}),t({message:`Agent "${o}" not found in ${a}. Found in: ${E}${k}`});return}const S=j5(_);fe.setState({viewContextPath:S.path,selectedNode:o})}setTimeout(()=>{l({nodes:[{id:o}],padding:.5,duration:400})},200)}else a&&fe.setState({viewContextPath:w,selectedNode:null})},p=()=>{const b=fe.getState();if(b.agents.length===0)return!1;if(b.workflowStatus!=="running"&&b.workflowStatus!=="pending")return!0;if(a){const w=a.split("/").filter(Boolean),{failedSegment:N}=yb(b.subworkflowContexts,w);if(N)return!1}return!(o&&!a&&!b.agents.some(N=>N.name===o)&&im(b.subworkflowContexts,o).length===0)},x=()=>{c&&clearTimeout(c),c=setTimeout(()=>{r.current||p()&&m()},200)};return h=fe.subscribe(x),d=setTimeout(()=>{r.current||m()},5e3),x(),()=>{c&&clearTimeout(c),d&&clearTimeout(d),h&&h()}},[u,a,o,l]),e}var jh,vb;function Um(){if(vb)return jh;vb=1;var e="\0",t="\0",r="";class l{constructor(m){Ct(this,"_isDirected",!0);Ct(this,"_isMultigraph",!1);Ct(this,"_isCompound",!1);Ct(this,"_label");Ct(this,"_defaultNodeLabelFn",()=>{});Ct(this,"_defaultEdgeLabelFn",()=>{});Ct(this,"_nodes",{});Ct(this,"_in",{});Ct(this,"_preds",{});Ct(this,"_out",{});Ct(this,"_sucs",{});Ct(this,"_edgeObjs",{});Ct(this,"_edgeLabels",{});Ct(this,"_nodeCount",0);Ct(this,"_edgeCount",0);Ct(this,"_parent");Ct(this,"_children");m&&(this._isDirected=Object.hasOwn(m,"directed")?m.directed:!0,this._isMultigraph=Object.hasOwn(m,"multigraph")?m.multigraph:!1,this._isCompound=Object.hasOwn(m,"compound")?m.compound:!1),this._isCompound&&(this._parent={},this._children={},this._children[t]={})}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(m){return this._label=m,this}graph(){return this._label}setDefaultNodeLabel(m){return this._defaultNodeLabelFn=m,typeof m!="function"&&(this._defaultNodeLabelFn=()=>m),this}nodeCount(){return this._nodeCount}nodes(){return Object.keys(this._nodes)}sources(){var m=this;return this.nodes().filter(p=>Object.keys(m._in[p]).length===0)}sinks(){var m=this;return this.nodes().filter(p=>Object.keys(m._out[p]).length===0)}setNodes(m,p){var x=arguments,b=this;return m.forEach(function(w){x.length>1?b.setNode(w,p):b.setNode(w)}),this}setNode(m,p){return Object.hasOwn(this._nodes,m)?(arguments.length>1&&(this._nodes[m]=p),this):(this._nodes[m]=arguments.length>1?p:this._defaultNodeLabelFn(m),this._isCompound&&(this._parent[m]=t,this._children[m]={},this._children[t][m]=!0),this._in[m]={},this._preds[m]={},this._out[m]={},this._sucs[m]={},++this._nodeCount,this)}node(m){return this._nodes[m]}hasNode(m){return Object.hasOwn(this._nodes,m)}removeNode(m){var p=this;if(Object.hasOwn(this._nodes,m)){var x=b=>p.removeEdge(p._edgeObjs[b]);delete this._nodes[m],this._isCompound&&(this._removeFromParentsChildList(m),delete this._parent[m],this.children(m).forEach(function(b){p.setParent(b)}),delete this._children[m]),Object.keys(this._in[m]).forEach(x),delete this._in[m],delete this._preds[m],Object.keys(this._out[m]).forEach(x),delete this._out[m],delete this._sucs[m],--this._nodeCount}return this}setParent(m,p){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(p===void 0)p=t;else{p+="";for(var x=p;x!==void 0;x=this.parent(x))if(x===m)throw new Error("Setting "+p+" as parent of "+m+" would create a cycle");this.setNode(p)}return this.setNode(m),this._removeFromParentsChildList(m),this._parent[m]=p,this._children[p][m]=!0,this}_removeFromParentsChildList(m){delete this._children[this._parent[m]][m]}parent(m){if(this._isCompound){var p=this._parent[m];if(p!==t)return p}}children(m=t){if(this._isCompound){var p=this._children[m];if(p)return Object.keys(p)}else{if(m===t)return this.nodes();if(this.hasNode(m))return[]}}predecessors(m){var p=this._preds[m];if(p)return Object.keys(p)}successors(m){var p=this._sucs[m];if(p)return Object.keys(p)}neighbors(m){var p=this.predecessors(m);if(p){const b=new Set(p);for(var x of this.successors(m))b.add(x);return Array.from(b.values())}}isLeaf(m){var p;return this.isDirected()?p=this.successors(m):p=this.neighbors(m),p.length===0}filterNodes(m){var p=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});p.setGraph(this.graph());var x=this;Object.entries(this._nodes).forEach(function([N,_]){m(N)&&p.setNode(N,_)}),Object.values(this._edgeObjs).forEach(function(N){p.hasNode(N.v)&&p.hasNode(N.w)&&p.setEdge(N,x.edge(N))});var b={};function w(N){var _=x.parent(N);return _===void 0||p.hasNode(_)?(b[N]=_,_):_ in b?b[_]:w(_)}return this._isCompound&&p.nodes().forEach(N=>p.setParent(N,w(N))),p}setDefaultEdgeLabel(m){return this._defaultEdgeLabelFn=m,typeof m!="function"&&(this._defaultEdgeLabelFn=()=>m),this}edgeCount(){return this._edgeCount}edges(){return Object.values(this._edgeObjs)}setPath(m,p){var x=this,b=arguments;return m.reduce(function(w,N){return b.length>1?x.setEdge(w,N,p):x.setEdge(w,N),N}),this}setEdge(){var m,p,x,b,w=!1,N=arguments[0];typeof N=="object"&&N!==null&&"v"in N?(m=N.v,p=N.w,x=N.name,arguments.length===2&&(b=arguments[1],w=!0)):(m=N,p=arguments[1],x=arguments[3],arguments.length>2&&(b=arguments[2],w=!0)),m=""+m,p=""+p,x!==void 0&&(x=""+x);var _=u(this._isDirected,m,p,x);if(Object.hasOwn(this._edgeLabels,_))return w&&(this._edgeLabels[_]=b),this;if(x!==void 0&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(m),this.setNode(p),this._edgeLabels[_]=w?b:this._defaultEdgeLabelFn(m,p,x);var S=c(this._isDirected,m,p,x);return m=S.v,p=S.w,Object.freeze(S),this._edgeObjs[_]=S,a(this._preds[p],m),a(this._sucs[m],p),this._in[p][_]=S,this._out[m][_]=S,this._edgeCount++,this}edge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x);return this._edgeLabels[b]}edgeAsObj(){const m=this.edge(...arguments);return typeof m!="object"?{label:m}:m}hasEdge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x);return Object.hasOwn(this._edgeLabels,b)}removeEdge(m,p,x){var b=arguments.length===1?d(this._isDirected,arguments[0]):u(this._isDirected,m,p,x),w=this._edgeObjs[b];return w&&(m=w.v,p=w.w,delete this._edgeLabels[b],delete this._edgeObjs[b],o(this._preds[p],m),o(this._sucs[m],p),delete this._in[p][b],delete this._out[m][b],this._edgeCount--),this}inEdges(m,p){var x=this._in[m];if(x){var b=Object.values(x);return p?b.filter(w=>w.v===p):b}}outEdges(m,p){var x=this._out[m];if(x){var b=Object.values(x);return p?b.filter(w=>w.w===p):b}}nodeEdges(m,p){var x=this.inEdges(m,p);if(x)return x.concat(this.outEdges(m,p))}}function a(h,m){h[m]?h[m]++:h[m]=1}function o(h,m){--h[m]||delete h[m]}function u(h,m,p,x){var b=""+m,w=""+p;if(!h&&b>w){var N=b;b=w,w=N}return b+r+w+r+(x===void 0?e:x)}function c(h,m,p,x){var b=""+m,w=""+p;if(!h&&b>w){var N=b;b=w,w=N}var _={v:b,w};return x&&(_.name=x),_}function d(h,m){return u(h,m.v,m.w,m.name)}return jh=l,jh}var Ah,bb;function M5(){return bb||(bb=1,Ah="2.2.4"),Ah}var zh,wb;function D5(){return wb||(wb=1,zh={Graph:Um(),version:M5()}),zh}var Mh,Sb;function R5(){if(Sb)return Mh;Sb=1;var e=Um();Mh={write:t,read:a};function t(o){var u={options:{directed:o.isDirected(),multigraph:o.isMultigraph(),compound:o.isCompound()},nodes:r(o),edges:l(o)};return o.graph()!==void 0&&(u.value=structuredClone(o.graph())),u}function r(o){return o.nodes().map(function(u){var c=o.node(u),d=o.parent(u),h={v:u};return c!==void 0&&(h.value=c),d!==void 0&&(h.parent=d),h})}function l(o){return o.edges().map(function(u){var c=o.edge(u),d={v:u.v,w:u.w};return u.name!==void 0&&(d.name=u.name),c!==void 0&&(d.value=c),d})}function a(o){var u=new e(o.options).setGraph(o.value);return o.nodes.forEach(function(c){u.setNode(c.v,c.value),c.parent&&u.setParent(c.v,c.parent)}),o.edges.forEach(function(c){u.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),u}return Mh}var Dh,_b;function O5(){if(_b)return Dh;_b=1,Dh=e;function e(t){var r={},l=[],a;function o(u){Object.hasOwn(r,u)||(r[u]=!0,a.push(u),t.successors(u).forEach(o),t.predecessors(u).forEach(o))}return t.nodes().forEach(function(u){a=[],o(u),a.length&&l.push(a)}),l}return Dh}var Rh,kb;function C_(){if(kb)return Rh;kb=1;class e{constructor(){Ct(this,"_arr",[]);Ct(this,"_keyIndices",{})}size(){return this._arr.length}keys(){return this._arr.map(function(r){return r.key})}has(r){return Object.hasOwn(this._keyIndices,r)}priority(r){var l=this._keyIndices[r];if(l!==void 0)return this._arr[l].priority}min(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key}add(r,l){var a=this._keyIndices;if(r=String(r),!Object.hasOwn(a,r)){var o=this._arr,u=o.length;return a[r]=u,o.push({key:r,priority:l}),this._decrease(u),!0}return!1}removeMin(){this._swap(0,this._arr.length-1);var r=this._arr.pop();return delete this._keyIndices[r.key],this._heapify(0),r.key}decrease(r,l){var a=this._keyIndices[r];if(l>this._arr[a].priority)throw new Error("New priority is greater than current priority. Key: "+r+" Old: "+this._arr[a].priority+" New: "+l);this._arr[a].priority=l,this._decrease(a)}_heapify(r){var l=this._arr,a=2*r,o=a+1,u=r;a>1,!(l[o].priority1;function r(a,o,u,c){return l(a,String(o),u||t,c||function(d){return a.outEdges(d)})}function l(a,o,u,c){var d={},h=new e,m,p,x=function(b){var w=b.v!==m?b.v:b.w,N=d[w],_=u(b),S=p.distance+_;if(_<0)throw new Error("dijkstra does not allow negative edge weights. Bad edge: "+b+" Weight: "+_);S0&&(m=h.removeMin(),p=d[m],p.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return Oh}var Lh,Nb;function L5(){if(Nb)return Lh;Nb=1;var e=T_();Lh=t;function t(r,l,a){return r.nodes().reduce(function(o,u){return o[u]=e(r,u,l,a),o},{})}return Lh}var Hh,Cb;function j_(){if(Cb)return Hh;Cb=1,Hh=e;function e(t){var r=0,l=[],a={},o=[];function u(c){var d=a[c]={onStack:!0,lowlink:r,index:r++};if(l.push(c),t.successors(c).forEach(function(p){Object.hasOwn(a,p)?a[p].onStack&&(d.lowlink=Math.min(d.lowlink,a[p].index)):(u(p),d.lowlink=Math.min(d.lowlink,a[p].lowlink))}),d.lowlink===d.index){var h=[],m;do m=l.pop(),a[m].onStack=!1,h.push(m);while(c!==m);o.push(h)}}return t.nodes().forEach(function(c){Object.hasOwn(a,c)||u(c)}),o}return Hh}var Bh,Tb;function H5(){if(Tb)return Bh;Tb=1;var e=j_();Bh=t;function t(r){return e(r).filter(function(l){return l.length>1||l.length===1&&r.hasEdge(l[0],l[0])})}return Bh}var Ih,jb;function B5(){if(jb)return Ih;jb=1,Ih=t;var e=()=>1;function t(l,a,o){return r(l,a||e,o||function(u){return l.outEdges(u)})}function r(l,a,o){var u={},c=l.nodes();return c.forEach(function(d){u[d]={},u[d][d]={distance:0},c.forEach(function(h){d!==h&&(u[d][h]={distance:Number.POSITIVE_INFINITY})}),o(d).forEach(function(h){var m=h.v===d?h.w:h.v,p=a(h);u[d][m]={distance:p,predecessor:d}})}),c.forEach(function(d){var h=u[d];c.forEach(function(m){var p=u[m];c.forEach(function(x){var b=p[d],w=h[x],N=p[x],_=b.distance+w.distance;_a.successors(p):p=>a.neighbors(p),d=u==="post"?t:r,h=[],m={};return o.forEach(p=>{if(!a.hasNode(p))throw new Error("Graph does not have node: "+p);d(p,c,m,h)}),h}function t(a,o,u,c){for(var d=[[a,!1]];d.length>0;){var h=d.pop();h[1]?c.push(h[0]):Object.hasOwn(u,h[0])||(u[h[0]]=!0,d.push([h[0],!0]),l(o(h[0]),m=>d.push([m,!1])))}}function r(a,o,u,c){for(var d=[a];d.length>0;){var h=d.pop();Object.hasOwn(u,h)||(u[h]=!0,c.push(h),l(o(h),m=>d.push(m)))}}function l(a,o){for(var u=a.length;u--;)o(a[u],u,a);return a}return $h}var Vh,Db;function q5(){if(Db)return Vh;Db=1;var e=z_();Vh=t;function t(r,l){return e(r,l,"post")}return Vh}var Ph,Rb;function U5(){if(Rb)return Ph;Rb=1;var e=z_();Ph=t;function t(r,l){return e(r,l,"pre")}return Ph}var Gh,Ob;function $5(){if(Ob)return Gh;Ob=1;var e=Um(),t=C_();Gh=r;function r(l,a){var o=new e,u={},c=new t,d;function h(p){var x=p.v===d?p.w:p.v,b=c.priority(x);if(b!==void 0){var w=a(p);w0;){if(d=c.removeMin(),Object.hasOwn(u,d))o.setEdge(d,u[d]);else{if(m)throw new Error("Input graph is not connected: "+l);m=!0}l.nodeEdges(d).forEach(h)}return o}return Gh}var Fh,Lb;function V5(){return Lb||(Lb=1,Fh={components:O5(),dijkstra:T_(),dijkstraAll:L5(),findCycles:H5(),floydWarshall:B5(),isAcyclic:I5(),postorder:q5(),preorder:U5(),prim:$5(),tarjan:j_(),topsort:A_()}),Fh}var Yh,Hb;function Yn(){if(Hb)return Yh;Hb=1;var e=D5();return Yh={Graph:e.Graph,json:R5(),alg:V5(),version:e.version},Yh}var Xh,Bb;function P5(){if(Bb)return Xh;Bb=1;class e{constructor(){let a={};a._next=a._prev=a,this._sentinel=a}dequeue(){let a=this._sentinel,o=a._prev;if(o!==a)return t(o),o}enqueue(a){let o=this._sentinel;a._prev&&a._next&&t(a),a._next=o._next,o._next._prev=a,o._next=a,a._prev=o}toString(){let a=[],o=this._sentinel,u=o._prev;for(;u!==o;)a.push(JSON.stringify(u,r)),u=u._prev;return"["+a.join(", ")+"]"}}function t(l){l._prev._next=l._next,l._next._prev=l._prev,delete l._next,delete l._prev}function r(l,a){if(l!=="_next"&&l!=="_prev")return a}return Xh=e,Xh}var Qh,Ib;function G5(){if(Ib)return Qh;Ib=1;let e=Yn().Graph,t=P5();Qh=l;let r=()=>1;function l(h,m){if(h.nodeCount()<=1)return[];let p=u(h,m||r);return a(p.graph,p.buckets,p.zeroIdx).flatMap(b=>h.outEdges(b.v,b.w))}function a(h,m,p){let x=[],b=m[m.length-1],w=m[0],N;for(;h.nodeCount();){for(;N=w.dequeue();)o(h,m,p,N);for(;N=b.dequeue();)o(h,m,p,N);if(h.nodeCount()){for(let _=m.length-2;_>0;--_)if(N=m[_].dequeue(),N){x=x.concat(o(h,m,p,N,!0));break}}}return x}function o(h,m,p,x,b){let w=b?[]:void 0;return h.inEdges(x.v).forEach(N=>{let _=h.edge(N),S=h.node(N.v);b&&w.push({v:N.v,w:N.w}),S.out-=_,c(m,p,S)}),h.outEdges(x.v).forEach(N=>{let _=h.edge(N),S=N.w,E=h.node(S);E.in-=_,c(m,p,E)}),h.removeNode(x.v),w}function u(h,m){let p=new e,x=0,b=0;h.nodes().forEach(_=>{p.setNode(_,{v:_,in:0,out:0})}),h.edges().forEach(_=>{let S=p.edge(_.v,_.w)||0,E=m(_),k=S+E;p.setEdge(_.v,_.w,k),b=Math.max(b,p.node(_.v).out+=E),x=Math.max(x,p.node(_.w).in+=E)});let w=d(b+x+3).map(()=>new t),N=x+1;return p.nodes().forEach(_=>{c(w,N,p.node(_))}),{graph:p,buckets:w,zeroIdx:N}}function c(h,m,p){p.out?p.in?h[p.out-p.in+m].enqueue(p):h[h.length-1].enqueue(p):h[0].enqueue(p)}function d(h){const m=[];for(let p=0;p$.setNode(H,R.node(H))),R.edges().forEach(H=>{let B=$.edge(H.v,H.w)||{weight:0,minlen:1},U=R.edge(H);$.setEdge(H.v,H.w,{weight:B.weight+U.weight,minlen:Math.max(B.minlen,U.minlen)})}),$}function l(R){let $=new e({multigraph:R.isMultigraph()}).setGraph(R.graph());return R.nodes().forEach(H=>{R.children(H).length||$.setNode(H,R.node(H))}),R.edges().forEach(H=>{$.setEdge(H,R.edge(H))}),$}function a(R){let $=R.nodes().map(H=>{let B={};return R.outEdges(H).forEach(U=>{B[U.w]=(B[U.w]||0)+R.edge(U).weight}),B});return L(R.nodes(),$)}function o(R){let $=R.nodes().map(H=>{let B={};return R.inEdges(H).forEach(U=>{B[U.v]=(B[U.v]||0)+R.edge(U).weight}),B});return L(R.nodes(),$)}function u(R,$){let H=R.x,B=R.y,U=$.x-H,ee=$.y-B,I=R.width/2,F=R.height/2;if(!U&&!ee)throw new Error("Not possible to find intersection inside of the rectangle");let z,G;return Math.abs(ee)*I>Math.abs(U)*F?(ee<0&&(F=-F),z=F*U/ee,G=F):(U<0&&(I=-I),z=I,G=I*ee/U),{x:H+z,y:B+G}}function c(R){let $=A(w(R)+1).map(()=>[]);return R.nodes().forEach(H=>{let B=R.node(H),U=B.rank;U!==void 0&&($[U][B.order]=H)}),$}function d(R){let $=R.nodes().map(B=>{let U=R.node(B).rank;return U===void 0?Number.MAX_VALUE:U}),H=b(Math.min,$);R.nodes().forEach(B=>{let U=R.node(B);Object.hasOwn(U,"rank")&&(U.rank-=H)})}function h(R){let $=R.nodes().map(I=>R.node(I).rank),H=b(Math.min,$),B=[];R.nodes().forEach(I=>{let F=R.node(I).rank-H;B[F]||(B[F]=[]),B[F].push(I)});let U=0,ee=R.graph().nodeRankFactor;Array.from(B).forEach((I,F)=>{I===void 0&&F%ee!==0?--U:I!==void 0&&U&&I.forEach(z=>R.node(z).rank+=U)})}function m(R,$,H,B){let U={width:0,height:0};return arguments.length>=4&&(U.rank=H,U.order=B),t(R,"border",U,$)}function p(R,$=x){const H=[];for(let B=0;Bx){const H=p($);return R.apply(null,H.map(B=>R.apply(null,B)))}else return R.apply(null,$)}function w(R){const H=R.nodes().map(B=>{let U=R.node(B).rank;return U===void 0?Number.MIN_VALUE:U});return b(Math.max,H)}function N(R,$){let H={lhs:[],rhs:[]};return R.forEach(B=>{$(B)?H.lhs.push(B):H.rhs.push(B)}),H}function _(R,$){let H=Date.now();try{return $()}finally{console.log(R+" time: "+(Date.now()-H)+"ms")}}function S(R,$){return $()}let E=0;function k(R){var $=++E;return R+(""+$)}function A(R,$,H=1){$==null&&($=R,R=0);let B=ee=>ee<$;H<0&&(B=ee=>$B[$]),Object.entries(R).reduce((B,[U,ee])=>(B[U]=H(ee,U),B),{})}function L(R,$){return R.reduce((H,B,U)=>(H[B]=$[U],H),{})}return Zh}var Kh,Ub;function F5(){if(Ub)return Kh;Ub=1;let e=G5(),t=jt().uniqueId;Kh={run:r,undo:a};function r(o){(o.graph().acyclicer==="greedy"?e(o,c(o)):l(o)).forEach(d=>{let h=o.edge(d);o.removeEdge(d),h.forwardName=d.name,h.reversed=!0,o.setEdge(d.w,d.v,h,t("rev"))});function c(d){return h=>d.edge(h).weight}}function l(o){let u=[],c={},d={};function h(m){Object.hasOwn(d,m)||(d[m]=!0,c[m]=!0,o.outEdges(m).forEach(p=>{Object.hasOwn(c,p.w)?u.push(p):h(p.w)}),delete c[m])}return o.nodes().forEach(h),u}function a(o){o.edges().forEach(u=>{let c=o.edge(u);if(c.reversed){o.removeEdge(u);let d=c.forwardName;delete c.reversed,delete c.forwardName,o.setEdge(u.w,u.v,c,d)}})}return Kh}var Jh,$b;function Y5(){if($b)return Jh;$b=1;let e=jt();Jh={run:t,undo:l};function t(a){a.graph().dummyChains=[],a.edges().forEach(o=>r(a,o))}function r(a,o){let u=o.v,c=a.node(u).rank,d=o.w,h=a.node(d).rank,m=o.name,p=a.edge(o),x=p.labelRank;if(h===c+1)return;a.removeEdge(o);let b,w,N;for(N=0,++c;c{let u=a.node(o),c=u.edgeLabel,d;for(a.setEdge(u.edgeObj,c);u.dummy;)d=a.successors(o)[0],a.removeNode(o),c.points.push({x:u.x,y:u.y}),u.dummy==="edge-label"&&(c.x=u.x,c.y=u.y,c.width=u.width,c.height=u.height),o=d,u=a.node(o)})}return Jh}var Wh,Vb;function xc(){if(Vb)return Wh;Vb=1;const{applyWithChunking:e}=jt();Wh={longestPath:t,slack:r};function t(l){var a={};function o(u){var c=l.node(u);if(Object.hasOwn(a,u))return c.rank;a[u]=!0;let d=l.outEdges(u).map(m=>m==null?Number.POSITIVE_INFINITY:o(m.w)-l.edge(m).minlen);var h=e(Math.min,d);return h===Number.POSITIVE_INFINITY&&(h=0),c.rank=h}l.sources().forEach(o)}function r(l,a){return l.node(a.w).rank-l.node(a.v).rank-l.edge(a).minlen}return Wh}var ep,Pb;function M_(){if(Pb)return ep;Pb=1;var e=Yn().Graph,t=xc().slack;ep=r;function r(u){var c=new e({directed:!1}),d=u.nodes()[0],h=u.nodeCount();c.setNode(d,{});for(var m,p;l(c,u){var p=m.v,x=h===p?m.w:p;!u.hasNode(x)&&!t(c,m)&&(u.setNode(x,{}),u.setEdge(h,x,{}),d(x))})}return u.nodes().forEach(d),u.nodeCount()}function a(u,c){return c.edges().reduce((h,m)=>{let p=Number.POSITIVE_INFINITY;return u.hasNode(m.v)!==u.hasNode(m.w)&&(p=t(c,m)),pc.node(h).rank+=d)}return ep}var tp,Gb;function X5(){if(Gb)return tp;Gb=1;var e=M_(),t=xc().slack,r=xc().longestPath,l=Yn().alg.preorder,a=Yn().alg.postorder,o=jt().simplify;tp=u,u.initLowLimValues=m,u.initCutValues=c,u.calcCutValue=h,u.leaveEdge=x,u.enterEdge=b,u.exchangeEdges=w;function u(E){E=o(E),r(E);var k=e(E);m(k),c(k,E);for(var A,M;A=x(k);)M=b(k,E,A),w(k,E,A,M)}function c(E,k){var A=a(E,E.nodes());A=A.slice(0,A.length-1),A.forEach(M=>d(E,k,M))}function d(E,k,A){var M=E.node(A),j=M.parent;E.edge(A,j).cutvalue=h(E,k,A)}function h(E,k,A){var M=E.node(A),j=M.parent,L=!0,R=k.edge(A,j),$=0;return R||(L=!1,R=k.edge(j,A)),$=R.weight,k.nodeEdges(A).forEach(H=>{var B=H.v===A,U=B?H.w:H.v;if(U!==j){var ee=B===L,I=k.edge(H).weight;if($+=ee?I:-I,_(E,A,U)){var F=E.edge(A,U).cutvalue;$+=ee?-F:F}}}),$}function m(E,k){arguments.length<2&&(k=E.nodes()[0]),p(E,{},1,k)}function p(E,k,A,M,j){var L=A,R=E.node(M);return k[M]=!0,E.neighbors(M).forEach($=>{Object.hasOwn(k,$)||(A=p(E,k,A,$,M))}),R.low=L,R.lim=A++,j?R.parent=j:delete R.parent,A}function x(E){return E.edges().find(k=>E.edge(k).cutvalue<0)}function b(E,k,A){var M=A.v,j=A.w;k.hasEdge(M,j)||(M=A.w,j=A.v);var L=E.node(M),R=E.node(j),$=L,H=!1;L.lim>R.lim&&($=R,H=!0);var B=k.edges().filter(U=>H===S(E,E.node(U.v),$)&&H!==S(E,E.node(U.w),$));return B.reduce((U,ee)=>t(k,ee)!k.node(j).parent),M=l(E,A);M=M.slice(1),M.forEach(j=>{var L=E.node(j).parent,R=k.edge(j,L),$=!1;R||(R=k.edge(L,j),$=!0),k.node(j).rank=k.node(L).rank+($?R.minlen:-R.minlen)})}function _(E,k,A){return E.hasEdge(k,A)}function S(E,k,A){return A.low<=k.lim&&k.lim<=A.lim}return tp}var np,Fb;function Q5(){if(Fb)return np;Fb=1;var e=xc(),t=e.longestPath,r=M_(),l=X5();np=a;function a(d){var h=d.graph().ranker;if(h instanceof Function)return h(d);switch(d.graph().ranker){case"network-simplex":c(d);break;case"tight-tree":u(d);break;case"longest-path":o(d);break;case"none":break;default:c(d)}}var o=t;function u(d){t(d),r(d)}function c(d){l(d)}return np}var rp,Yb;function Z5(){if(Yb)return rp;Yb=1,rp=e;function e(l){let a=r(l);l.graph().dummyChains.forEach(o=>{let u=l.node(o),c=u.edgeObj,d=t(l,a,c.v,c.w),h=d.path,m=d.lca,p=0,x=h[p],b=!0;for(;o!==c.w;){if(u=l.node(o),b){for(;(x=h[p])!==m&&l.node(x).maxRankh||m>a[p].lim));for(x=p,p=u;(p=l.parent(p))!==x;)d.push(p);return{path:c.concat(d.reverse()),lca:x}}function r(l){let a={},o=0;function u(c){let d=o;l.children(c).forEach(u),a[c]={low:d,lim:o++}}return l.children().forEach(u),a}return rp}var ip,Xb;function K5(){if(Xb)return ip;Xb=1;let e=jt();ip={run:t,cleanup:o};function t(u){let c=e.addDummyNode(u,"root",{},"_root"),d=l(u),h=Object.values(d),m=e.applyWithChunking(Math.max,h)-1,p=2*m+1;u.graph().nestingRoot=c,u.edges().forEach(b=>u.edge(b).minlen*=p);let x=a(u)+1;u.children().forEach(b=>r(u,c,p,x,m,d,b)),u.graph().nodeRankFactor=p}function r(u,c,d,h,m,p,x){let b=u.children(x);if(!b.length){x!==c&&u.setEdge(c,x,{weight:0,minlen:d});return}let w=e.addBorderNode(u,"_bt"),N=e.addBorderNode(u,"_bb"),_=u.node(x);u.setParent(w,x),_.borderTop=w,u.setParent(N,x),_.borderBottom=N,b.forEach(S=>{r(u,c,d,h,m,p,S);let E=u.node(S),k=E.borderTop?E.borderTop:S,A=E.borderBottom?E.borderBottom:S,M=E.borderTop?h:2*h,j=k!==A?1:m-p[x]+1;u.setEdge(w,k,{weight:M,minlen:j,nestingEdge:!0}),u.setEdge(A,N,{weight:M,minlen:j,nestingEdge:!0})}),u.parent(x)||u.setEdge(c,w,{weight:0,minlen:m+p[x]})}function l(u){var c={};function d(h,m){var p=u.children(h);p&&p.length&&p.forEach(x=>d(x,m+1)),c[h]=m}return u.children().forEach(h=>d(h,1)),c}function a(u){return u.edges().reduce((c,d)=>c+u.edge(d).weight,0)}function o(u){var c=u.graph();u.removeNode(c.nestingRoot),delete c.nestingRoot,u.edges().forEach(d=>{var h=u.edge(d);h.nestingEdge&&u.removeEdge(d)})}return ip}var lp,Qb;function J5(){if(Qb)return lp;Qb=1;let e=jt();lp=t;function t(l){function a(o){let u=l.children(o),c=l.node(o);if(u.length&&u.forEach(a),Object.hasOwn(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(let d=c.minRank,h=c.maxRank+1;dl(d.node(h))),d.edges().forEach(h=>l(d.edge(h)))}function l(d){let h=d.width;d.width=d.height,d.height=h}function a(d){d.nodes().forEach(h=>o(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(o),Object.hasOwn(m,"y")&&o(m)})}function o(d){d.y=-d.y}function u(d){d.nodes().forEach(h=>c(d.node(h))),d.edges().forEach(h=>{let m=d.edge(h);m.points.forEach(c),Object.hasOwn(m,"x")&&c(m)})}function c(d){let h=d.x;d.x=d.y,d.y=h}return ap}var op,Kb;function e4(){if(Kb)return op;Kb=1;let e=jt();op=t;function t(r){let l={},a=r.nodes().filter(m=>!r.children(m).length),o=a.map(m=>r.node(m).rank),u=e.applyWithChunking(Math.max,o),c=e.range(u+1).map(()=>[]);function d(m){if(l[m])return;l[m]=!0;let p=r.node(m);c[p.rank].push(m),r.successors(m).forEach(d)}return a.sort((m,p)=>r.node(m).rank-r.node(p).rank).forEach(d),c}return op}var sp,Jb;function t4(){if(Jb)return sp;Jb=1;let e=jt().zipObject;sp=t;function t(l,a){let o=0;for(let u=1;ub)),c=a.flatMap(x=>l.outEdges(x).map(b=>({pos:u[b.w],weight:l.edge(b).weight})).sort((b,w)=>b.pos-w.pos)),d=1;for(;d{let b=x.pos+d;m[b]+=x.weight;let w=0;for(;b>0;)b%2&&(w+=m[b+1]),b=b-1>>1,m[b]+=x.weight;p+=x.weight*w}),p}return sp}var up,Wb;function n4(){if(Wb)return up;Wb=1,up=e;function e(t,r=[]){return r.map(l=>{let a=t.inEdges(l);if(a.length){let o=a.reduce((u,c)=>{let d=t.edge(c),h=t.node(c.v);return{sum:u.sum+d.weight*h.order,weight:u.weight+d.weight}},{sum:0,weight:0});return{v:l,barycenter:o.sum/o.weight,weight:o.weight}}else return{v:l}})}return up}var cp,e1;function r4(){if(e1)return cp;e1=1;let e=jt();cp=t;function t(a,o){let u={};a.forEach((d,h)=>{let m=u[d.v]={indegree:0,in:[],out:[],vs:[d.v],i:h};d.barycenter!==void 0&&(m.barycenter=d.barycenter,m.weight=d.weight)}),o.edges().forEach(d=>{let h=u[d.v],m=u[d.w];h!==void 0&&m!==void 0&&(m.indegree++,h.out.push(u[d.w]))});let c=Object.values(u).filter(d=>!d.indegree);return r(c)}function r(a){let o=[];function u(d){return h=>{h.merged||(h.barycenter===void 0||d.barycenter===void 0||h.barycenter>=d.barycenter)&&l(d,h)}}function c(d){return h=>{h.in.push(d),--h.indegree===0&&a.push(h)}}for(;a.length;){let d=a.pop();o.push(d),d.in.reverse().forEach(u(d)),d.out.forEach(c(d))}return o.filter(d=>!d.merged).map(d=>e.pick(d,["vs","i","barycenter","weight"]))}function l(a,o){let u=0,c=0;a.weight&&(u+=a.barycenter*a.weight,c+=a.weight),o.weight&&(u+=o.barycenter*o.weight,c+=o.weight),a.vs=o.vs.concat(a.vs),a.barycenter=u/c,a.weight=c,a.i=Math.min(o.i,a.i),o.merged=!0}return cp}var fp,t1;function i4(){if(t1)return fp;t1=1;let e=jt();fp=t;function t(a,o){let u=e.partition(a,w=>Object.hasOwn(w,"barycenter")),c=u.lhs,d=u.rhs.sort((w,N)=>N.i-w.i),h=[],m=0,p=0,x=0;c.sort(l(!!o)),x=r(h,d,x),c.forEach(w=>{x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,p+=w.weight,x=r(h,d,x)});let b={vs:h.flat(!0)};return p&&(b.barycenter=m/p,b.weight=p),b}function r(a,o,u){let c;for(;o.length&&(c=o[o.length-1]).i<=u;)o.pop(),a.push(c.vs),u++;return u}function l(a){return(o,u)=>o.barycenteru.barycenter?1:a?u.i-o.i:o.i-u.i}return fp}var dp,n1;function l4(){if(n1)return dp;n1=1;let e=n4(),t=r4(),r=i4();dp=l;function l(u,c,d,h){let m=u.children(c),p=u.node(c),x=p?p.borderLeft:void 0,b=p?p.borderRight:void 0,w={};x&&(m=m.filter(E=>E!==x&&E!==b));let N=e(u,m);N.forEach(E=>{if(u.children(E.v).length){let k=l(u,E.v,d,h);w[E.v]=k,Object.hasOwn(k,"barycenter")&&o(E,k)}});let _=t(N,d);a(_,w);let S=r(_,h);if(x&&(S.vs=[x,S.vs,b].flat(!0),u.predecessors(x).length)){let E=u.node(u.predecessors(x)[0]),k=u.node(u.predecessors(b)[0]);Object.hasOwn(S,"barycenter")||(S.barycenter=0,S.weight=0),S.barycenter=(S.barycenter*S.weight+E.order+k.order)/(S.weight+2),S.weight+=2}return S}function a(u,c){u.forEach(d=>{d.vs=d.vs.flatMap(h=>c[h]?c[h].vs:h)})}function o(u,c){u.barycenter!==void 0?(u.barycenter=(u.barycenter*u.weight+c.barycenter*c.weight)/(u.weight+c.weight),u.weight+=c.weight):(u.barycenter=c.barycenter,u.weight=c.weight)}return dp}var hp,r1;function a4(){if(r1)return hp;r1=1;let e=Yn().Graph,t=jt();hp=r;function r(a,o,u,c){c||(c=a.nodes());let d=l(a),h=new e({compound:!0}).setGraph({root:d}).setDefaultNodeLabel(m=>a.node(m));return c.forEach(m=>{let p=a.node(m),x=a.parent(m);(p.rank===o||p.minRank<=o&&o<=p.maxRank)&&(h.setNode(m),h.setParent(m,x||d),a[u](m).forEach(b=>{let w=b.v===m?b.w:b.v,N=h.edge(w,m),_=N!==void 0?N.weight:0;h.setEdge(w,m,{weight:a.edge(b).weight+_})}),Object.hasOwn(p,"minRank")&&h.setNode(m,{borderLeft:p.borderLeft[o],borderRight:p.borderRight[o]}))}),h}function l(a){for(var o;a.hasNode(o=t.uniqueId("_root")););return o}return hp}var pp,i1;function o4(){if(i1)return pp;i1=1,pp=e;function e(t,r,l){let a={},o;l.forEach(u=>{let c=t.parent(u),d,h;for(;c;){if(d=t.parent(c),d?(h=a[d],a[d]=c):(h=o,o=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return pp}var mp,l1;function s4(){if(l1)return mp;l1=1;let e=e4(),t=t4(),r=l4(),l=a4(),a=o4(),o=Yn().Graph,u=jt();mp=c;function c(p,x){if(x&&typeof x.customOrder=="function"){x.customOrder(p,c);return}let b=u.maxRank(p),w=d(p,u.range(1,b+1),"inEdges"),N=d(p,u.range(b-1,-1,-1),"outEdges"),_=e(p);if(m(p,_),x&&x.disableOptimalOrderHeuristic)return;let S=Number.POSITIVE_INFINITY,E;for(let k=0,A=0;A<4;++k,++A){h(k%2?w:N,k%4>=2),_=u.buildLayerMatrix(p);let M=t(p,_);M{w.has(_)||w.set(_,[]),w.get(_).push(S)};for(const _ of p.nodes()){const S=p.node(_);if(typeof S.rank=="number"&&N(S.rank,_),typeof S.minRank=="number"&&typeof S.maxRank=="number")for(let E=S.minRank;E<=S.maxRank;E++)E!==S.rank&&N(E,_)}return x.map(function(_){return l(p,_,b,w.get(_)||[])})}function h(p,x){let b=new o;p.forEach(function(w){let N=w.graph().root,_=r(w,N,b,x);_.vs.forEach((S,E)=>w.node(S).order=E),a(w,b,_.vs)})}function m(p,x){Object.values(x).forEach(b=>b.forEach((w,N)=>p.node(w).order=N))}return mp}var gp,a1;function u4(){if(a1)return gp;a1=1;let e=Yn().Graph,t=jt();gp={positionX:b,findType1Conflicts:r,findType2Conflicts:l,addConflict:o,hasConflict:u,verticalAlignment:c,horizontalCompaction:d,alignCoordinates:p,findSmallestWidthAlignment:m,balance:x};function r(_,S){let E={};function k(A,M){let j=0,L=0,R=A.length,$=M[M.length-1];return M.forEach((H,B)=>{let U=a(_,H),ee=U?_.node(U).order:R;(U||H===$)&&(M.slice(L,B+1).forEach(I=>{_.predecessors(I).forEach(F=>{let z=_.node(F),G=z.order;(G{H=M[B],_.node(H).dummy&&_.predecessors(H).forEach(U=>{let ee=_.node(U);ee.dummy&&(ee.order$)&&o(E,U,H)})})}function A(M,j){let L=-1,R,$=0;return j.forEach((H,B)=>{if(_.node(H).dummy==="border"){let U=_.predecessors(H);U.length&&(R=_.node(U[0]).order,k(j,$,B,L,R),$=B,L=R)}k(j,$,j.length,R,M.length)}),j}return S.length&&S.reduce(A),E}function a(_,S){if(_.node(S).dummy)return _.predecessors(S).find(E=>_.node(E).dummy)}function o(_,S,E){if(S>E){let A=S;S=E,E=A}let k=_[S];k||(_[S]=k={}),k[E]=!0}function u(_,S,E){if(S>E){let k=S;S=E,E=k}return!!_[S]&&Object.hasOwn(_[S],E)}function c(_,S,E,k){let A={},M={},j={};return S.forEach(L=>{L.forEach((R,$)=>{A[R]=R,M[R]=R,j[R]=$})}),S.forEach(L=>{let R=-1;L.forEach($=>{let H=k($);if(H.length){H=H.sort((U,ee)=>j[U]-j[ee]);let B=(H.length-1)/2;for(let U=Math.floor(B),ee=Math.ceil(B);U<=ee;++U){let I=H[U];M[$]===$&&RMath.max(U,M[ee.v]+j.edge(ee)),0)}function H(B){let U=j.outEdges(B).reduce((I,F)=>Math.min(I,M[F.w]-j.edge(F)),Number.POSITIVE_INFINITY),ee=_.node(B);U!==Number.POSITIVE_INFINITY&&ee.borderType!==L&&(M[B]=Math.max(M[B],U))}return R($,j.predecessors.bind(j)),R(H,j.successors.bind(j)),Object.keys(k).forEach(B=>M[B]=M[E[B]]),M}function h(_,S,E,k){let A=new e,M=_.graph(),j=w(M.nodesep,M.edgesep,k);return S.forEach(L=>{let R;L.forEach($=>{let H=E[$];if(A.setNode(H),R){var B=E[R],U=A.edge(B,H);A.setEdge(B,H,Math.max(j(_,$,R),U||0))}R=$})}),A}function m(_,S){return Object.values(S).reduce((E,k)=>{let A=Number.NEGATIVE_INFINITY,M=Number.POSITIVE_INFINITY;Object.entries(k).forEach(([L,R])=>{let $=N(_,L)/2;A=Math.max(R+$,A),M=Math.min(R-$,M)});const j=A-M;return j{["l","r"].forEach(j=>{let L=M+j,R=_[L];if(R===S)return;let $=Object.values(R),H=k-t.applyWithChunking(Math.min,$);j!=="l"&&(H=A-t.applyWithChunking(Math.max,$)),H&&(_[L]=t.mapValues(R,B=>B+H))})})}function x(_,S){return t.mapValues(_.ul,(E,k)=>{if(S)return _[S.toLowerCase()][k];{let A=Object.values(_).map(M=>M[k]).sort((M,j)=>M-j);return(A[1]+A[2])/2}})}function b(_){let S=t.buildLayerMatrix(_),E=Object.assign(r(_,S),l(_,S)),k={},A;["u","d"].forEach(j=>{A=j==="u"?S:Object.values(S).reverse(),["l","r"].forEach(L=>{L==="r"&&(A=A.map(B=>Object.values(B).reverse()));let R=(j==="u"?_.predecessors:_.successors).bind(_),$=c(_,A,E,R),H=d(_,A,$.root,$.align,L==="r");L==="r"&&(H=t.mapValues(H,B=>-B)),k[j+L]=H})});let M=m(_,k);return p(k,M),x(k,_.graph().align)}function w(_,S,E){return(k,A,M)=>{let j=k.node(A),L=k.node(M),R=0,$;if(R+=j.width/2,Object.hasOwn(j,"labelpos"))switch(j.labelpos.toLowerCase()){case"l":$=-j.width/2;break;case"r":$=j.width/2;break}if($&&(R+=E?$:-$),$=0,R+=(j.dummy?S:_)/2,R+=(L.dummy?S:_)/2,R+=L.width/2,Object.hasOwn(L,"labelpos"))switch(L.labelpos.toLowerCase()){case"l":$=L.width/2;break;case"r":$=-L.width/2;break}return $&&(R+=E?$:-$),$=0,R}}function N(_,S){return _.node(S).width}return gp}var xp,o1;function c4(){if(o1)return xp;o1=1;let e=jt(),t=u4().positionX;xp=r;function r(a){a=e.asNonCompoundGraph(a),l(a),Object.entries(t(a)).forEach(([o,u])=>a.node(o).x=u)}function l(a){let o=e.buildLayerMatrix(a),u=a.graph().ranksep,c=0;o.forEach(d=>{const h=d.reduce((m,p)=>{const x=a.node(p).height;return m>x?m:x},0);d.forEach(m=>a.node(m).y=c+h/2),c+=h+u})}return xp}var yp,s1;function f4(){if(s1)return yp;s1=1;let e=F5(),t=Y5(),r=Q5(),l=jt().normalizeRanks,a=Z5(),o=jt().removeEmptyRanks,u=K5(),c=J5(),d=W5(),h=s4(),m=c4(),p=jt(),x=Yn().Graph;yp=b;function b(C,P){let X=P&&P.debugTiming?p.time:p.notime;X("layout",()=>{let J=X(" buildLayoutGraph",()=>R(C));X(" runLayout",()=>w(J,X,P)),X(" updateInputGraph",()=>N(C,J))})}function w(C,P,X){P(" makeSpaceForEdgeLabels",()=>$(C)),P(" removeSelfEdges",()=>Q(C)),P(" acyclic",()=>e.run(C)),P(" nestingGraph.run",()=>u.run(C)),P(" rank",()=>r(p.asNonCompoundGraph(C))),P(" injectEdgeLabelProxies",()=>H(C)),P(" removeEmptyRanks",()=>o(C)),P(" nestingGraph.cleanup",()=>u.cleanup(C)),P(" normalizeRanks",()=>l(C)),P(" assignRankMinMax",()=>B(C)),P(" removeEdgeLabelProxies",()=>U(C)),P(" normalize.run",()=>t.run(C)),P(" parentDummyChains",()=>a(C)),P(" addBorderSegments",()=>c(C)),P(" order",()=>h(C,X)),P(" insertSelfEdges",()=>K(C)),P(" adjustCoordinateSystem",()=>d.adjust(C)),P(" position",()=>m(C)),P(" positionSelfEdges",()=>D(C)),P(" removeBorderNodes",()=>G(C)),P(" normalize.undo",()=>t.undo(C)),P(" fixupEdgeLabelCoords",()=>F(C)),P(" undoCoordinateSystem",()=>d.undo(C)),P(" translateGraph",()=>ee(C)),P(" assignNodeIntersects",()=>I(C)),P(" reversePoints",()=>z(C)),P(" acyclic.undo",()=>e.undo(C))}function N(C,P){C.nodes().forEach(X=>{let J=C.node(X),ne=P.node(X);J&&(J.x=ne.x,J.y=ne.y,J.rank=ne.rank,P.children(X).length&&(J.width=ne.width,J.height=ne.height))}),C.edges().forEach(X=>{let J=C.edge(X),ne=P.edge(X);J.points=ne.points,Object.hasOwn(ne,"x")&&(J.x=ne.x,J.y=ne.y)}),C.graph().width=P.graph().width,C.graph().height=P.graph().height}let _=["nodesep","edgesep","ranksep","marginx","marginy"],S={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},E=["acyclicer","ranker","rankdir","align"],k=["width","height","rank"],A={width:0,height:0},M=["minlen","weight","width","height","labeloffset"],j={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},L=["labelpos"];function R(C){let P=new x({multigraph:!0,compound:!0}),X=Y(C.graph());return P.setGraph(Object.assign({},S,q(X,_),p.pick(X,E))),C.nodes().forEach(J=>{let ne=Y(C.node(J));const re=q(ne,k);Object.keys(A).forEach(se=>{re[se]===void 0&&(re[se]=A[se])}),P.setNode(J,re),P.setParent(J,C.parent(J))}),C.edges().forEach(J=>{let ne=Y(C.edge(J));P.setEdge(J,Object.assign({},j,q(ne,M),p.pick(ne,L)))}),P}function $(C){let P=C.graph();P.ranksep/=2,C.edges().forEach(X=>{let J=C.edge(X);J.minlen*=2,J.labelpos.toLowerCase()!=="c"&&(P.rankdir==="TB"||P.rankdir==="BT"?J.width+=J.labeloffset:J.height+=J.labeloffset)})}function H(C){C.edges().forEach(P=>{let X=C.edge(P);if(X.width&&X.height){let J=C.node(P.v),re={rank:(C.node(P.w).rank-J.rank)/2+J.rank,e:P};p.addDummyNode(C,"edge-proxy",re,"_ep")}})}function B(C){let P=0;C.nodes().forEach(X=>{let J=C.node(X);J.borderTop&&(J.minRank=C.node(J.borderTop).rank,J.maxRank=C.node(J.borderBottom).rank,P=Math.max(P,J.maxRank))}),C.graph().maxRank=P}function U(C){C.nodes().forEach(P=>{let X=C.node(P);X.dummy==="edge-proxy"&&(C.edge(X.e).labelRank=X.rank,C.removeNode(P))})}function ee(C){let P=Number.POSITIVE_INFINITY,X=0,J=Number.POSITIVE_INFINITY,ne=0,re=C.graph(),se=re.marginx||0,xe=re.marginy||0;function be(ye){let pe=ye.x,_e=ye.y,ze=ye.width,Te=ye.height;P=Math.min(P,pe-ze/2),X=Math.max(X,pe+ze/2),J=Math.min(J,_e-Te/2),ne=Math.max(ne,_e+Te/2)}C.nodes().forEach(ye=>be(C.node(ye))),C.edges().forEach(ye=>{let pe=C.edge(ye);Object.hasOwn(pe,"x")&&be(pe)}),P-=se,J-=xe,C.nodes().forEach(ye=>{let pe=C.node(ye);pe.x-=P,pe.y-=J}),C.edges().forEach(ye=>{let pe=C.edge(ye);pe.points.forEach(_e=>{_e.x-=P,_e.y-=J}),Object.hasOwn(pe,"x")&&(pe.x-=P),Object.hasOwn(pe,"y")&&(pe.y-=J)}),re.width=X-P+se,re.height=ne-J+xe}function I(C){C.edges().forEach(P=>{let X=C.edge(P),J=C.node(P.v),ne=C.node(P.w),re,se;X.points?(re=X.points[0],se=X.points[X.points.length-1]):(X.points=[],re=ne,se=J),X.points.unshift(p.intersectRect(J,re)),X.points.push(p.intersectRect(ne,se))})}function F(C){C.edges().forEach(P=>{let X=C.edge(P);if(Object.hasOwn(X,"x"))switch((X.labelpos==="l"||X.labelpos==="r")&&(X.width-=X.labeloffset),X.labelpos){case"l":X.x-=X.width/2+X.labeloffset;break;case"r":X.x+=X.width/2+X.labeloffset;break}})}function z(C){C.edges().forEach(P=>{let X=C.edge(P);X.reversed&&X.points.reverse()})}function G(C){C.nodes().forEach(P=>{if(C.children(P).length){let X=C.node(P),J=C.node(X.borderTop),ne=C.node(X.borderBottom),re=C.node(X.borderLeft[X.borderLeft.length-1]),se=C.node(X.borderRight[X.borderRight.length-1]);X.width=Math.abs(se.x-re.x),X.height=Math.abs(ne.y-J.y),X.x=re.x+X.width/2,X.y=J.y+X.height/2}}),C.nodes().forEach(P=>{C.node(P).dummy==="border"&&C.removeNode(P)})}function Q(C){C.edges().forEach(P=>{if(P.v===P.w){var X=C.node(P.v);X.selfEdges||(X.selfEdges=[]),X.selfEdges.push({e:P,label:C.edge(P)}),C.removeEdge(P)}})}function K(C){var P=p.buildLayerMatrix(C);P.forEach(X=>{var J=0;X.forEach((ne,re)=>{var se=C.node(ne);se.order=re+J,(se.selfEdges||[]).forEach(xe=>{p.addDummyNode(C,"selfedge",{width:xe.label.width,height:xe.label.height,rank:se.rank,order:re+ ++J,e:xe.e,label:xe.label},"_se")}),delete se.selfEdges})})}function D(C){C.nodes().forEach(P=>{var X=C.node(P);if(X.dummy==="selfedge"){var J=C.node(X.e.v),ne=J.x+J.width/2,re=J.y,se=X.x-ne,xe=J.height/2;C.setEdge(X.e,X.label),C.removeNode(P),X.label.points=[{x:ne+2*se/3,y:re-xe},{x:ne+5*se/6,y:re-xe},{x:ne+se,y:re},{x:ne+5*se/6,y:re+xe},{x:ne+2*se/3,y:re+xe}],X.label.x=X.x,X.label.y=X.y}})}function q(C,P){return p.mapValues(p.pick(C,P),Number)}function Y(C){var P={};return C&&Object.entries(C).forEach(([X,J])=>{typeof X=="string"&&(X=X.toLowerCase()),P[X]=J}),P}return yp}var vp,u1;function d4(){if(u1)return vp;u1=1;let e=jt(),t=Yn().Graph;vp={debugOrdering:r};function r(l){let a=e.buildLayerMatrix(l),o=new t({compound:!0,multigraph:!0}).setGraph({});return l.nodes().forEach(u=>{o.setNode(u,{label:u}),o.setParent(u,"layer"+l.node(u).rank)}),l.edges().forEach(u=>o.setEdge(u.v,u.w,{},u.name)),a.forEach((u,c)=>{let d="layer"+c;o.setNode(d,{rank:"same"}),u.reduce((h,m)=>(o.setEdge(h,m,{style:"invis"}),m))}),o}return vp}var bp,c1;function h4(){return c1||(c1=1,bp="1.1.8"),bp}var wp,f1;function p4(){return f1||(f1=1,wp={graphlib:Yn(),layout:f4(),debug:d4(),util:{time:jt().time,notime:jt().notime},version:h4()}),wp}var m4=p4();const d1=Qo(m4),Ao=200,la=56,h1=20,p1=40,g4=20,m1=12;function x4(e,t,r,l,a,o,u,c){const d=[],h=[],m=new Set,p=new Set,x=new Map;for(const E of r)for(const k of E.agents)p.add(k),x.set(k,E.name);for(const E of r){const k=a[E.name],A=E.agents.length,M=Ao+h1*2,j=p1+A*la+(A-1)*m1+g4;d.push({id:E.name,type:"groupNode",position:{x:0,y:0},data:{label:E.name,type:"parallel_group",status:(k==null?void 0:k.status)||"pending",groupName:E.name,progress:o[E.name]},style:{width:M,height:j}});for(let L=0;L$entryPoint",source:"$start",target:u,type:"animatedEdge",data:{},animated:!1})}const w=new Set(d.map(E=>E.id)),N=new Map;for(const E of d)E.parentId&&N.set(E.id,E.parentId);const _=new Map;for(const E of t){const k=N.get(E.from)??E.from,A=N.get(E.to)??E.to;if(!w.has(k)||!w.has(A)||k===A)continue;const M=`${k}->${A}`,j=_.get(M);if(j){j.when!==E.when&&(h[j.idx].data={when:void 0});continue}const L=h.length;_.set(M,{when:E.when,idx:L});const R=`${M}${E.when?`[${E.when}]`:""}`;h.push({id:R,source:k,target:A,type:"animatedEdge",data:{when:E.when},animated:!1})}const S=y4(d,h,"$start");return v4(d,h,S),{nodes:d,edges:h}}function y4(e,t,r){const l=new Set(e.filter(h=>!h.parentId).map(h=>h.id)),a=new Map;for(const h of t)!l.has(h.source)||!l.has(h.target)||(a.has(h.source)||a.set(h.source,[]),a.get(h.source).push({target:h.target,edgeId:h.id}));for(const h of a.values())h.sort((m,p)=>m.targetp.target?1:0);const o=new Set,u=new Set,c=new Set,d=h=>{c.add(h),u.add(h);for(const{target:m,edgeId:p}of a.get(h)??[])u.has(m)?o.add(p):c.has(m)||d(m);u.delete(h)};l.has(r)&&d(r);for(const h of[...a.keys()].sort())c.has(h)||d(h);return o}function v4(e,t,r){var a,o,u,c;const l=new d1.graphlib.Graph;l.setDefaultEdgeLabel(()=>({})),l.setGraph({rankdir:"TB",nodesep:50,ranksep:70,marginx:30,marginy:30});for(const d of e){if(d.parentId)continue;const h=d.type==="groupNode",m=h&&((a=d.style)==null?void 0:a.width)||Ao,p=h&&((o=d.style)==null?void 0:o.height)||la;l.setNode(d.id,{width:m,height:p})}for(const d of t)!l.hasNode(d.source)||!l.hasNode(d.target)||(r.has(d.id)?l.setEdge(d.target,d.source):l.setEdge(d.source,d.target));d1.layout(l);for(const d of e){if(d.parentId)continue;const h=l.node(d.id);if(!h)continue;const m=d.type==="groupNode",p=m&&((u=d.style)==null?void 0:u.width)||Ao,x=m&&((c=d.style)==null?void 0:c.height)||la;d.position={x:h.x-p/2,y:h.y-x/2}}}const Fe={pending:"#6b7280",running:"#3b82f6",completed:"#22c55e",failed:"#ef4444",paused:"#f59e0b",idle:"#6b7280",waiting:"#a855f7"},b4=70,g1=90;function Bc({data:e,children:t}){const[r,l]=V.useState(!1),a=V.useRef(null),o=V.useCallback(()=>{a.current=setTimeout(()=>l(!0),200)},[]),u=V.useCallback(()=>{a.current&&clearTimeout(a.current),l(!1)},[]),c=Fe[e.status]||Fe.pending;return y.jsxs("div",{className:"relative",onMouseEnter:o,onMouseLeave:u,children:[t,r&&y.jsxs("div",{className:He("absolute z-50 bottom-full left-1/2 -translate-x-1/2 mb-2","bg-[var(--surface-raised)] border border-[var(--border)] shadow-lg","rounded-lg px-3 py-2 max-w-[260px] pointer-events-none","animate-[tooltip-in_150ms_ease-out]"),children:[y.jsx("div",{className:"absolute top-full left-1/2 -translate-x-1/2 w-0 h-0 border-x-[6px] border-x-transparent border-t-[6px] border-t-[var(--border)]"}),y.jsxs("div",{className:"flex flex-col gap-1.5 text-[11px]",children:[y.jsxs("div",{className:"flex items-center gap-1.5",children:[y.jsx("span",{className:"w-2 h-2 rounded-full flex-shrink-0",style:{backgroundColor:c}}),y.jsx("span",{className:"font-medium text-[var(--text)] capitalize",children:e.status}),e.iteration!=null&&e.iteration>1&&y.jsxs("span",{className:"text-[var(--text-muted)] ml-auto",children:["iter ",e.iteration]})]}),y.jsx("div",{className:"h-px bg-[var(--border)]"}),y.jsxs("div",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-0.5",children:[e.elapsed!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Elapsed"}),y.jsx("span",{className:"text-[var(--text)] font-mono",children:Jt(e.elapsed)})]}),e.model&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Model"}),y.jsx("span",{className:"text-[var(--text)] truncate",children:e.model})]}),e.tokens!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Tokens"}),y.jsxs("span",{className:"text-[var(--text)] font-mono",children:[Pn(e.tokens),e.inputTokens!=null&&e.outputTokens!=null&&y.jsxs("span",{className:"text-[var(--text-muted)]",children:[" ","(",Pn(e.inputTokens),"↑ ",Pn(e.outputTokens),"↓)"]})]})]}),e.costUsd!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Cost"}),y.jsx("span",{className:"text-[var(--text)] font-mono",children:yi(e.costUsd)})]}),e.exitCode!=null&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Exit code"}),y.jsx("span",{className:He("font-mono",e.exitCode===0?"text-[var(--completed)]":"text-[var(--failed)]"),children:e.exitCode})]}),e.selectedOption&&y.jsxs(y.Fragment,{children:[y.jsx("span",{className:"text-[var(--text-muted)]",children:"Selected"}),y.jsx("span",{className:"text-[var(--text)] truncate",children:e.selectedOption})]})]}),e.errorMessage&&y.jsxs(y.Fragment,{children:[y.jsx("div",{className:"h-px bg-[var(--border)]"}),y.jsxs("div",{className:"text-red-400 leading-tight",children:[e.errorType&&y.jsxs("span",{className:"font-medium",children:[e.errorType,": "]}),y.jsxs("span",{className:"break-words",children:[e.errorMessage.slice(0,120),e.errorMessage.length>120?"...":""]})]})]})]})]})]})}const w4=V.memo(function({data:t,id:r,selected:l}){var L;const a=t,o=ol(),c=((L=o[r])==null?void 0:L.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=o[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.model,x=h==null?void 0:h.tokens,b=h==null?void 0:h.input_tokens,w=h==null?void 0:h.output_tokens,N=h==null?void 0:h.cost_usd,_=h==null?void 0:h.iteration,S=h==null?void 0:h.error_type,E=h==null?void 0:h.error_message,k=h==null?void 0:h.context_pct,A=S4(r,c),M=_4(c),j=(()=>{if(c==="failed"&&E)return{text:E.length>40?E.slice(0,37)+"...":E,className:"text-red-400"};if(c==="running")return{text:A,className:"text-[var(--text-muted)]"};if(c==="completed"){const R=[];return m!=null&&R.push(Jt(m)),x!=null&&R.push(`${Pn(x)} tok`),N!=null&&R.push(yi(N)),{text:R.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,elapsed:m,model:p,tokens:x,inputTokens:b,outputTokens:w,costUsd:N,iteration:_,errorType:S,errorMessage:E},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",M),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(sN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsxs("div",{className:"flex items-center gap-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_!=null&&_>1&&y.jsxs("span",{className:"flex-shrink-0 inline-flex items-center justify-center px-1.5 py-0.5 rounded-full text-[9px] font-bold leading-none",style:{backgroundColor:`${d}25`,color:d},children:["x",_]})]}),j.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",j.className),children:j.text})]}),k!=null&&y.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-[2px] rounded-b-lg overflow-hidden",style:{backgroundColor:"rgba(255,255,255,0.06)"},children:y.jsx("div",{className:He("h-full transition-all duration-500",k>=g1?"animate-[context-pulse_2s_ease-in-out_infinite]":""),style:{width:`${Math.min(k,100)}%`,backgroundColor:k>=g1?"#ef4444":k>=b4?"#f59e0b":"#22c55e"}})})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function S4(e,t){var d;const r=(d=ol()[e])==null?void 0:d.startedAt,l=fe(h=>h.replayMode),a=fe(h=>h.lastEventTime),[o,u]=V.useState("0.0s"),c=V.useRef(null);return V.useEffect(()=>{if(t==="running"){if(l){c.current&&clearInterval(c.current);const p=r??a??0;u(Jt((a??p)-p));return}const h=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-h)/1e3;u(Jt(p))};return m(),c.current=setInterval(m,1e3),()=>{c.current&&clearInterval(c.current)}}else c.current&&clearInterval(c.current)},[t,r,l,a]),o}function _4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const k4=V.memo(function({data:t,id:r,selected:l}){var S;const a=t,o=ol(),c=((S=o[r])==null?void 0:S.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=o[r],m=h==null?void 0:h.elapsed,p=h==null?void 0:h.exit_code,x=h==null?void 0:h.error_type,b=h==null?void 0:h.error_message,w=E4(r,c),N=N4(c),_=(()=>{if(c==="failed"&&b)return{text:b.length>40?b.slice(0,37)+"...":b,className:"text-red-400"};if(c==="running")return{text:w,className:"text-[var(--text-muted)]"};if(c==="completed"){const E=[];return m!=null&&E.push(Jt(m)),p!=null&&E.push(`exit ${p}`),{text:E.join(" · ")||null,className:"text-[var(--text-muted)]"}}return{text:null,className:""}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,elapsed:m,exitCode:p,errorType:x,errorMessage:b},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",N),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="running"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(SN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),_.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",_.className),children:_.text})]})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function E4(e,t){var d;const r=(d=ol()[e])==null?void 0:d.startedAt,l=fe(h=>h.replayMode),a=fe(h=>h.lastEventTime),[o,u]=V.useState("0.0s"),c=V.useRef(null);return V.useEffect(()=>{if(t==="running"){if(l){c.current&&clearInterval(c.current);const p=r??a??0;u(Jt((a??p)-p));return}const h=r!=null?r*1e3:Date.now(),m=()=>{const p=(Date.now()-h)/1e3;u(Jt(p))};return m(),c.current=setInterval(m,1e3),()=>{c.current&&clearInterval(c.current)}}else c.current&&clearInterval(c.current)},[t,r,l,a]),o}function N4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const C4=V.memo(function({data:t,id:r,selected:l}){var p,x;const a=t,o=ol(),c=((p=o[r])==null?void 0:p.status)||a.status||"pending",d=Fe[c]||Fe.pending,h=(x=o[r])==null?void 0:x.selected_option,m=T4(c);return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:c,selectedOption:h},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 border-dashed bg-[var(--node-bg)] min-w-[140px] max-w-[220px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",c==="waiting"&&"shadow-[0_0_12px_var(--waiting-muted)]",c==="running"&&"shadow-[0_0_12px_var(--running-glow)]",m),style:{borderColor:d},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",c==="waiting"&&"animate-pulse"),style:{backgroundColor:`${d}20`},children:y.jsx(wN,{className:"w-3.5 h-3.5",style:{color:d}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label}),c==="waiting"&&y.jsx("span",{className:"text-[10px] text-[var(--waiting)] truncate leading-tight",children:"Awaiting input..."}),c==="completed"&&h&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] truncate leading-tight",children:h})]})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function T4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"||e==="waiting"?l("node-activate"):(a==="running"||a==="waiting")&&e==="completed"&&l("node-complete");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const j4=V.memo(function({data:t,id:r,selected:l}){var _;const a=t,u=a.type==="for_each_group"?vN:gN,c=a.progress,m=((_=ol()[r])==null?void 0:_.status)||a.status||"pending",p=Fe[m]||Fe.pending,x=A4(m),b=c?`${c.completed+c.failed}/${c.total}${c.failed>0?` (${c.failed} failed)`:""}`:null,w=c&&c.total>0?(c.completed+c.failed)/c.total*100:0,N=c!=null&&c.failed>0;return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsxs("div",{className:He("flex flex-col gap-1 px-4 py-3 rounded-xl border-2 border-dashed bg-[var(--surface)]/80 min-w-[180px] transition-all duration-300",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",m==="running"&&"shadow-[0_0_16px_var(--running-glow)]",x),style:{borderColor:p,minHeight:"100%"},children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx(u,{className:"w-3.5 h-3.5",style:{color:p}}),y.jsx("span",{className:"text-xs font-medium text-[var(--text-secondary)]",children:a.label})]}),b&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] font-mono",children:b}),c&&c.total>0&&m==="running"&&y.jsx("div",{className:"w-full h-1 rounded-full bg-[var(--border)] overflow-hidden mt-0.5",children:y.jsx("div",{className:"h-full rounded-full transition-all duration-500 ease-out",style:{width:`${w}%`,backgroundColor:N?"var(--failed)":"var(--completed)"}})})]}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})});function A4(e){const t=V.useRef(e),[r,l]=V.useState("");return V.useEffect(()=>{const a=t.current;if(t.current=e,a===e)return;e==="running"?l("node-activate"):a==="running"&&(e==="completed"||e==="failed")&&l(e==="completed"?"node-complete":"node-fail");const o=setTimeout(()=>l(""),400);return()=>clearTimeout(o)},[e]),r}const z4=V.memo(function({data:t,id:r,selected:l}){const a=t,u=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.status})||a.status||"pending",c=Fe[u]||Fe.pending,d=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.elapsed}),h=fe(_=>{var S;return(S=_.nodes[r])==null?void 0:S.error_message}),m=fe(_=>_.navigateIntoSubworkflow),p=qm(),x=p.some(_=>_.parentAgent===r),b=p.find(_=>_.parentAgent===r),w=b==null?void 0:b.workflowName,N=(()=>{if(u==="failed"&&h)return{text:h.length>35?h.slice(0,32)+"...":h,className:"text-red-400"};if(u==="running")return{text:w||"Running subworkflow…",className:"text-[var(--text-muted)]"};if(u==="completed"){const _=[];return w&&_.push(w),d!=null&&_.push(`${d.toFixed(1)}s`),{text:_.join(" · ")||"Done",className:"text-[var(--text-muted)]"}}return{text:w||null,className:"text-[var(--text-muted)]"}})();return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx(Bc,{data:{status:u,elapsed:d,errorType:void 0,errorMessage:h,iteration:void 0},children:y.jsxs("div",{className:He("flex items-center gap-2 px-3 py-1.5 rounded-lg border-2 bg-[var(--node-bg)] min-w-[140px] max-w-[240px] transition-all duration-300 cursor-pointer",l&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u==="running"&&"shadow-[0_0_12px_var(--running-glow)]"),style:{borderColor:c,borderStyle:"dashed"},onDoubleClick:_=>{x&&(_.stopPropagation(),m(r))},children:[y.jsx("div",{className:He("flex items-center justify-center w-6 h-6 rounded-md flex-shrink-0",u==="running"&&"animate-pulse"),style:{backgroundColor:`${c}20`},children:y.jsx(Sc,{className:"w-3.5 h-3.5",style:{color:c}})}),y.jsxs("div",{className:"flex flex-col min-w-0 flex-1",children:[y.jsx("div",{className:"flex items-center gap-1",children:y.jsx("span",{className:"text-xs font-medium text-[var(--text)] truncate",children:a.label})}),N.text&&y.jsx("span",{className:He("text-[10px] truncate leading-tight",N.className),children:N.text})]}),x&&y.jsx(Rr,{className:"w-3.5 h-3.5 flex-shrink-0 text-[var(--text-muted)]"})]})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),M4=V.memo(function({data:t,selected:r}){const a=t.status||"pending",o=a==="completed",u=a==="failed",c=!o&&!u,d=o?Fe.completed:u?Fe.failed:Fe.pending;return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",o?"bg-[var(--completed)] shadow-[0_0_16px_var(--completed-muted)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:d},children:o?y.jsx(Yi,{className:"w-5 h-5 text-white",strokeWidth:3}):u?y.jsx(bw,{className:"w-3.5 h-3.5 text-white",fill:"white"}):y.jsx(Yi,{className:"w-5 h-5",strokeWidth:2.5,style:{color:c?Fe.pending:d}})})]})}),D4=V.memo(function({data:t,selected:r}){const a=t.status||"pending",o=Fe[a]||Fe.pending,u=a==="running"||a==="completed";return y.jsxs(y.Fragment,{children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 transition-all duration-300",u?"bg-[var(--completed)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",u&&"shadow-[0_0_12px_var(--completed-muted)]"),style:{borderColor:o},children:y.jsx(xm,{className:"w-4 h-4 ml-0.5",style:{color:u?"white":o}})}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),x1="#a78bfa",R4=V.memo(function({data:t,selected:r}){const l=t,a=l.status||"pending",o=a==="running"||a==="completed",u=o?x1:Fe[a]||x1,c=l.parentAgent,d=fe(h=>h.navigateUp);return y.jsxs(y.Fragment,{children:[y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 border-dashed transition-all duration-300 cursor-pointer",o?"bg-[#a78bfa]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]",o&&"shadow-[0_0_12px_rgba(167,139,250,0.4)]"),style:{borderColor:u},onDoubleClick:h=>{h.stopPropagation(),d()},children:y.jsx(aN,{className:"w-4 h-4",style:{color:o?"white":u}})}),c&&y.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] whitespace-nowrap",children:["from ",y.jsx("span",{className:"font-medium text-[var(--text)]",children:c})]})]}),y.jsx(Lt,{type:"source",position:ve.Bottom,className:"!bg-[var(--border)] !border-none !w-2 !h-2"})]})}),y1="#a78bfa",O4=V.memo(function({data:t,selected:r}){const l=t,a=l.status||"pending",o=a==="completed",u=a==="failed",c=o?y1:u?Fe.failed:y1,d=l.parentAgent,h=fe(m=>m.navigateUp);return y.jsxs(y.Fragment,{children:[y.jsx(Lt,{type:"target",position:ve.Top,className:"!bg-[var(--border)] !border-none !w-2 !h-2"}),y.jsxs("div",{className:"flex flex-col items-center gap-1",children:[y.jsx("div",{className:He("flex items-center justify-center w-11 h-11 rounded-full border-2 border-dashed transition-all duration-300 cursor-pointer",o?"bg-[#a78bfa] shadow-[0_0_12px_rgba(167,139,250,0.4)]":u?"bg-[var(--failed)] shadow-[0_0_16px_var(--failed-muted)]":"bg-[var(--node-bg)]",r&&"ring-2 ring-[var(--accent)] ring-offset-1 ring-offset-[var(--bg)]"),style:{borderColor:c},onDoubleClick:m=>{m.stopPropagation(),h()},children:y.jsx(oN,{className:"w-4 h-4",style:{color:o||u?"white":c}})}),d&&y.jsxs("span",{className:"text-[10px] text-[var(--text-muted)] whitespace-nowrap",children:["return to ",y.jsx("span",{className:"font-medium text-[var(--text)]",children:d})]})]})]})}),L4=V.memo(function({id:t,sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u,targetPosition:c,source:d,target:h,data:m}){const p=N5(),x=V.useMemo(()=>p.find($=>$.from===d&&$.to===h),[p,d,h]),[b,w,N]=Dm({sourceX:r,sourceY:l,targetX:a,targetY:o,sourcePosition:u,targetPosition:c}),_=m==null?void 0:m.when,S=!!_,E=(x==null?void 0:x.state)==="taken",k=(x==null?void 0:x.state)==="highlighted",A=(x==null?void 0:x.state)==="failed";let M="var(--edge-color)",j=2,L;A?(M="var(--failed)",j=3):E?(M="var(--edge-taken)",j=3):k&&(M="var(--edge-active)",j=3),S&&!E&&!k&&!A&&(L="6 3");const R=A?"failed":E?"taken":k?"active":"default";return y.jsxs(y.Fragment,{children:[y.jsx(rs,{id:t,path:b,style:{stroke:M,strokeWidth:j,strokeDasharray:L,transition:"stroke 0.3s ease, stroke-width 0.3s ease"},markerEnd:`url(#arrow-${R})`}),S&&y.jsx(XM,{children:y.jsx("div",{className:"nodrag nopan",style:{position:"absolute",transform:`translate(-50%, -50%) translate(${w}px,${N}px)`,pointerEvents:"all"},children:y.jsx("span",{className:"inline-block px-1.5 py-0.5 rounded-full text-[9px] font-mono leading-tight max-w-[140px] truncate",style:{backgroundColor:A?"var(--failed)":E?"var(--edge-taken)":"var(--surface)",color:A||E?"var(--bg)":"var(--text-muted)",border:`1px solid ${A?"var(--failed)":E?"var(--edge-taken)":"var(--border)"}`},title:_,children:_})})}),E&&y.jsx("circle",{r:"3",fill:"var(--edge-taken)",children:y.jsx("animateMotion",{dur:"1s",repeatCount:"indefinite",path:b})}),A&&y.jsx("circle",{r:"3",fill:"var(--failed)",opacity:"0.8",children:y.jsx("animateMotion",{dur:"1.5s",repeatCount:"indefinite",path:b})})]})});function H4(){const e=fe(u=>u.workflowStatus),t=fe(u=>u.workflowFailure),r=fe(u=>u.workflowFailedAgent),l=fe(u=>u.selectNode);if(e!=="failed"||!t)return null;const a=t.message||t.error_type||"Unknown error",o=t.error_type==="TimeoutError";return y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:He("flex items-center gap-2 px-4 py-2 rounded-lg","bg-red-950/90 border border-red-500/40 shadow-lg shadow-red-500/10","backdrop-blur-sm max-w-[560px]"),children:[y.jsx(ww,{className:"w-4 h-4 text-red-400 flex-shrink-0"}),y.jsxs("div",{className:"flex flex-col min-w-0",children:[y.jsx("span",{className:"text-xs font-medium text-red-300",children:"Workflow Failed"}),y.jsx("span",{className:"text-[11px] text-red-400/80 truncate",children:a}),o&&t.current_agent&&y.jsxs("span",{className:"text-[10px] text-red-400/60 truncate",children:["Timed out on agent: ",t.current_agent]}),t.checkpoint_path&&y.jsxs("span",{className:"text-[10px] text-red-400/50 truncate",title:t.checkpoint_path,children:["Checkpoint: ",t.checkpoint_path.split("/").pop()]})]}),r&&y.jsxs("button",{onClick:()=>l(r),className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] font-medium text-red-300 bg-red-500/20 hover:bg-red-500/30 transition-colors flex-shrink-0 ml-1",children:[y.jsx(hN,{className:"w-3 h-3"}),"View"]})]})})}function B4(){const[e,t]=V.useState(!1),r=fe(d=>d.workflowStatus),l=fe(d=>d.totalCost),a=fe(d=>d.totalTokens),o=fe(d=>d.agentsCompleted),u=fe(d=>d.agentsTotal),c=_w();return r!=="completed"||e?null:y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:He("flex items-center gap-3 px-4 py-2 rounded-lg","bg-green-950/90 border border-green-500/40 shadow-lg shadow-green-500/10","backdrop-blur-sm"),children:[y.jsx(cN,{className:"w-4 h-4 text-green-400 flex-shrink-0"}),y.jsx("span",{className:"text-xs font-medium text-green-300",children:"Completed"}),y.jsxs("div",{className:"flex items-center gap-3 text-[11px] text-green-400/80 font-mono",children:[y.jsx("span",{children:c}),u>0&&y.jsxs("span",{children:[o,"/",u," agents"]}),a>0&&y.jsxs("span",{children:[Pn(a)," tok"]}),l>0&&y.jsx("span",{children:yi(l)})]}),y.jsx("button",{onClick:()=>t(!0),className:"p-0.5 rounded text-green-500/60 hover:text-green-300 transition-colors flex-shrink-0 ml-1",children:y.jsx(ll,{className:"w-3.5 h-3.5"})})]})})}const I4={agentNode:w4,scriptNode:k4,gateNode:C4,groupNode:j4,workflowNode:z4,endNode:M4,startNode:D4,ingressNode:R4,egressNode:O4},q4={animatedEdge:L4},U4={type:"animatedEdge"};function $4(){return y.jsx("svg",{style:{position:"absolute",width:0,height:0},children:y.jsxs("defs",{children:[y.jsx("marker",{id:"arrow-default",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-color)"})}),y.jsx("marker",{id:"arrow-active",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-active)"})}),y.jsx("marker",{id:"arrow-taken",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--edge-taken)"})}),y.jsx("marker",{id:"arrow-failed",viewBox:"0 0 10 10",refX:"8",refY:"5",markerWidth:"8",markerHeight:"8",orient:"auto-start-reverse",children:y.jsx("path",{d:"M 0 0 L 10 5 L 0 10 z",fill:"var(--failed)"})})]})})}function V4(){const e=C5(),t=fe(z=>z.viewContextPath),r=fe(z=>z.selectNode),l=fe(z=>z.selectedNode),a=fe(z=>z.workflowStatus),o=fe(z=>z.wsStatus),u=fe(z=>z.workflowFailedAgent),c=fe(z=>z.navigateIntoSubworkflow),{agents:d,routes:h,parallelGroups:m,forEachGroups:p,nodes:x,groupProgress:b,entryPoint:w,subworkflowContexts:N,parentAgent:_}=e,[S,E,k]=QM([]),[A,M,j]=ZM([]),L=V.useRef(!1),R=V.useRef(""),$=JSON.stringify(t);V.useEffect(()=>{if(d.length===0){R.current!==$&&(L.current=!1,R.current=$,E([]),M([]));return}if(R.current!==$&&(L.current=!1,R.current=$),L.current)return;L.current=!0;const{nodes:z,edges:G}=x4(d,h,m,p,x,b,w,_);E(z),M(G)},[d,h,m,p,x,b,w,E,M,$,_]),V.useEffect(()=>{L.current&&E(z=>z.map(G=>{const Q=x[G.id];if(!Q)return G;const K=Q.status||"pending",D=G.data.status;if(K!==D){const q={...G.data,status:K};return G.data.groupName&&b[G.data.groupName]&&(q.progress=b[G.data.groupName]),{...G,data:q}}if(G.data.groupName&&b[G.data.groupName]){const q=G.data.progress,Y=b[G.data.groupName];if(Y&&(!q||q.completed!==Y.completed||q.failed!==Y.failed))return{...G,data:{...G.data,progress:Y}}}return G}))},[x,b,E]);const H=V.useCallback((z,G)=>{G.type==="groupNode"&&G.data.type!=="for_each_group"||r(G.id)},[r]),B=V.useCallback((z,G)=>{N.some(K=>K.parentAgent===G.id)&&c(G.id)},[N,c]),U=V.useCallback(()=>{r(null)},[r]),ee=V.useCallback(z=>{var Q;const G=((Q=z.data)==null?void 0:Q.status)||"pending";return Fe[G]??Fe.pending??"#6b7280"},[]);V.useEffect(()=>{E(z=>z.map(G=>({...G,selected:G.id===l})))},[l,E]),V.useEffect(()=>{a==="failed"&&u&&r(u)},[a,u,r]);const I=a==="pending"&&d.length===0,F=(()=>{switch(o){case"connecting":return"Connecting to workflow…";case"reconnecting":return"Reconnecting…";case"disconnected":return"Connection lost. Retrying…";default:return"Waiting for workflow…"}})();return y.jsxs("div",{className:"w-full h-full relative",children:[y.jsx($4,{}),y.jsx(H4,{}),y.jsx(B4,{}),I&&y.jsxs("div",{className:"absolute inset-0 z-10 flex flex-col items-center justify-center pointer-events-none",children:[y.jsxs("div",{className:"relative mb-3",children:[y.jsx(EN,{className:"w-8 h-8 text-[var(--accent)] opacity-20"}),y.jsx(ca,{className:"w-8 h-8 text-[var(--text-muted)] animate-spin absolute inset-0 opacity-40"})]}),y.jsx("p",{className:"text-sm text-[var(--text-muted)] animate-pulse",children:F})]}),y.jsxs(FM,{nodes:S,edges:A,onNodesChange:k,onEdgesChange:j,onNodeClick:H,onNodeDoubleClick:B,onPaneClick:U,nodeTypes:I4,edgeTypes:q4,defaultEdgeOptions:U4,fitView:!0,fitViewOptions:{padding:.2},minZoom:.2,maxZoom:2,proOptions:{hideAttribution:!0},nodesDraggable:!0,nodesConnectable:!1,elementsSelectable:!0,children:[y.jsx(t5,{variant:Mr.Dots,gap:20,size:1,color:"var(--border-subtle)"}),y.jsx(w5,{nodeColor:ee,maskColor:"var(--minimap-mask)",style:{background:"var(--minimap-bg)"},pannable:!0,zoomable:!0}),y.jsx(s5,{showInteractive:!1,children:y.jsx(P4,{})}),y.jsx(G4,{}),y.jsx(F4,{viewPathKey:$}),y.jsx(Y4,{})]})]})}function P4(){const{fitView:e}=al(),t=V.useCallback(()=>{e({padding:.2,duration:300})},[e]);return y.jsx("button",{onClick:t,className:"react-flow__controls-button",title:"Fit view (F)",style:{display:"flex",alignItems:"center",justifyContent:"center"},children:y.jsx(xN,{className:"w-3.5 h-3.5"})})}function G4(){const{fitView:e}=al();return V.useEffect(()=>{const t=r=>{var a;const l=(a=r.target)==null?void 0:a.tagName;l==="INPUT"||l==="TEXTAREA"||l==="SELECT"||r.key==="f"&&!r.ctrlKey&&!r.metaKey&&!r.altKey&&e({padding:.2,duration:300})};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[e]),null}function F4({viewPathKey:e}){const{fitView:t}=al(),r=V.useRef(e);return V.useEffect(()=>{r.current!==e&&(r.current=e,setTimeout(()=>t({padding:.2,duration:300}),50))},[e,t]),null}function Y4(){const e=z5();return e?y.jsx("div",{className:"absolute top-3 left-1/2 -translate-x-1/2 z-20 animate-[banner-in_200ms_ease-out]",children:y.jsxs("div",{className:"flex items-center gap-2 px-4 py-2 rounded-lg bg-amber-950/90 border border-amber-500/40 shadow-lg shadow-amber-500/10 backdrop-blur-sm max-w-[560px]",children:[y.jsx("span",{className:"text-xs text-amber-300",children:"⚠"}),y.jsx("span",{className:"text-[11px] text-amber-400/80",children:e.message}),y.jsx("a",{href:window.location.pathname,className:"px-2 py-0.5 rounded text-[10px] font-medium text-amber-300 bg-amber-500/20 hover:bg-amber-500/30 transition-colors flex-shrink-0 ml-1",children:"Root"})]})}):null}function sl({items:e}){const t=e.filter(r=>r.value!=null&&r.value!=="");return t.length===0?null:y.jsx("dl",{className:"grid grid-cols-[auto_1fr] gap-x-3 gap-y-1.5 text-xs",children:t.map(({label:r,value:l})=>y.jsxs("div",{className:"contents",children:[y.jsx("dt",{className:"text-[var(--text-muted)] whitespace-nowrap",children:r}),y.jsx("dd",{className:"text-[var(--text)] break-words",children:typeof l=="object"?JSON.stringify(l):String(l)})]},r))})}function D_(e){const t=[];return e.elapsed!=null&&t.push({label:"Elapsed",value:Jt(e.elapsed)}),e.model&&t.push({label:"Model",value:e.model}),e.reasoning_effort&&t.push({label:"Reasoning",value:e.reasoning_effort}),e.tokens!=null&&t.push({label:"Tokens",value:Pn(e.tokens)}),e.input_tokens!=null&&e.output_tokens!=null&&t.push({label:"In / Out",value:`${Pn(e.input_tokens)} / ${Pn(e.output_tokens)}`}),e.cost_usd!=null&&t.push({label:"Cost",value:yi(e.cost_usd)}),e.context_window_used!=null&&e.context_window_max!=null&&t.push({label:"Context",value:HN(e.context_window_used,e.context_window_max)}),e.iteration!=null&&t.push({label:"Iteration",value:e.iteration}),e.error_type&&t.push({label:"Error",value:e.error_type}),e.error_message&&t.push({label:"Message",value:e.error_message}),t}function nl({output:e,title:t="Output",defaultExpanded:r=!0,maxHeight:l="300px"}){const[a,o]=V.useState(r),[u,c]=V.useState(!1),d=Sw(e);if(!d)return null;const h=typeof e=="object"&&e!==null,m=async()=>{await navigator.clipboard.writeText(d),c(!0),setTimeout(()=>c(!1),2e3)};return y.jsxs("div",{className:"space-y-1.5",children:[y.jsxs("div",{className:"flex items-center justify-between",children:[y.jsxs("button",{onClick:()=>o(!a),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[a?y.jsx(il,{className:"w-3 h-3"}):y.jsx(Rr,{className:"w-3 h-3"}),t]}),a&&y.jsx("button",{onClick:m,className:"flex items-center gap-1 text-[10px] text-[var(--text-muted)] hover:text-[var(--text)] transition-colors",title:"Copy to clipboard",children:u?y.jsx(Yi,{className:"w-3 h-3 text-[var(--completed)]"}):y.jsx(gw,{className:"w-3 h-3"})})]}),a&&y.jsx("pre",{className:"bg-[var(--bg)] border border-[var(--border)] rounded-md p-3 font-mono text-[11px] leading-relaxed text-[var(--text)] overflow-auto whitespace-pre-wrap break-words",style:{maxHeight:l},children:h?y.jsx(X4,{text:d}):d})]})}function X4({text:e}){const t=e.split(/("(?:[^"\\]|\\.)*")/g);return y.jsx(y.Fragment,{children:t.map((r,l)=>{if(l%2===1){const o=t.slice(l+1).join(""),u=/^\s*:/.test(o);return y.jsx("span",{className:u?"text-blue-400":"text-green-400",children:r},l)}const a=r.replace(/\b(true|false|null)\b|(-?\d+\.?\d*(?:e[+-]?\d+)?)/gi,(o,u,c)=>u?`${o}`:c?`${o}`:o);return y.jsx("span",{dangerouslySetInnerHTML:{__html:a}},l)})})}function $m({activity:e,defaultExpanded:t=!0}){const[r,l]=V.useState(t),a=V.useRef(null);return V.useEffect(()=>{a.current&&r&&(a.current.scrollTop=a.current.scrollHeight)},[e.length,r]),e.length===0?null:y.jsxs("div",{className:"space-y-1.5",children:[y.jsxs("button",{onClick:()=>l(!r),className:"flex items-center gap-1 text-[10px] uppercase tracking-wider text-[var(--text-muted)] hover:text-[var(--text)] transition-colors font-semibold",children:[r?y.jsx(il,{className:"w-3 h-3"}):y.jsx(Rr,{className:"w-3 h-3"}),"Activity (",e.length,")"]}),r&&y.jsx("div",{ref:a,className:"max-h-[400px] overflow-y-auto space-y-0.5",children:e.map((o,u)=>y.jsx(Q4,{entry:o},u))})]})}function Q4({entry:e}){const t={reasoning:"text-indigo-400/70","tool-start":"text-blue-400","tool-complete":"text-green-400",turn:"text-amber-400",message:"text-[var(--text)]"};return y.jsxs("div",{className:He("py-1.5 px-2 rounded text-[11px] leading-relaxed border-b border-[var(--border-subtle)] last:border-b-0"),children:[y.jsxs("div",{className:"flex items-start gap-1.5",children:[y.jsx("span",{className:"w-4 text-center flex-shrink-0",children:e.icon}),y.jsx("span",{className:"text-[var(--text-muted)] uppercase text-[9px] font-semibold tracking-wider w-12 flex-shrink-0 pt-px",children:e.label}),y.jsx("span",{className:He("break-words",t[e.type]||"text-[var(--text)]"),children:typeof e.text=="object"?JSON.stringify(e.text):e.text})]}),e.detail&&y.jsx("div",{className:"mt-1 ml-[4.25rem] px-2 py-1 bg-[var(--bg)] rounded text-[10px] font-mono text-[var(--text-muted)] whitespace-pre-wrap break-words max-h-24 overflow-y-auto",children:typeof e.detail=="object"?JSON.stringify(e.detail,null,2):e.detail})]})}function v1({node:e}){const t=e.status,r=Fe[t]||Fe.pending,l=e.iterationHistory&&e.iterationHistory.length>0;return y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:t}),y.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Agent"})]}),l?y.jsx(b1,{label:`Iteration ${e.iteration??"?"} (current)`,defaultExpanded:!0,status:t,snapshot:{iteration:e.iteration??0,prompt:e.prompt,output:e.output,elapsed:e.elapsed,model:e.model,reasoning_effort:e.reasoning_effort,tokens:e.tokens,input_tokens:e.input_tokens,output_tokens:e.output_tokens,cost_usd:e.cost_usd,activity:e.activity,error_type:e.error_type,error_message:e.error_message}}):y.jsxs(y.Fragment,{children:[y.jsx(sl,{items:D_(e)}),e.prompt&&y.jsx(nl,{output:e.prompt,title:"Input / Prompt",defaultExpanded:!0}),y.jsx($m,{activity:e.activity,defaultExpanded:t!=="completed"}),e.output!=null&&y.jsx(nl,{output:e.output,title:"Output"})]}),l&&[...e.iterationHistory].reverse().map(a=>y.jsx(b1,{label:`Iteration ${a.iteration}`,defaultExpanded:!1,status:t,snapshot:a},a.iteration))]})}function b1({label:e,defaultExpanded:t,snapshot:r,status:l}){const[a,o]=V.useState(t);return y.jsxs("div",{className:"border border-[var(--border)] rounded-lg overflow-hidden",children:[y.jsxs("button",{onClick:()=>o(!a),className:"flex items-center gap-2 w-full px-3 py-2 bg-[var(--bg)] hover:bg-[var(--node-bg)] transition-colors text-left",children:[a?y.jsx(il,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}):y.jsx(Rr,{className:"w-3.5 h-3.5 text-[var(--text-muted)] flex-shrink-0"}),y.jsx("span",{className:"text-xs font-semibold text-[var(--text)]",children:e}),r.elapsed!=null&&y.jsx("span",{className:"text-[10px] text-[var(--text-muted)] ml-auto",children:Z4(r.elapsed)})]}),a&&y.jsxs("div",{className:"px-3 py-3 space-y-3 border-t border-[var(--border)]",children:[y.jsx(sl,{items:D_(r)}),r.prompt&&y.jsx(nl,{output:r.prompt,title:"Input / Prompt",defaultExpanded:!1}),y.jsx($m,{activity:r.activity,defaultExpanded:t&&l!=="completed"}),r.output!=null&&y.jsx(nl,{output:r.output,title:"Output",defaultExpanded:!0}),r.error_type&&y.jsxs("div",{className:"text-xs text-red-400",children:[y.jsx("span",{className:"font-semibold",children:r.error_type}),r.error_message&&y.jsxs("span",{className:"ml-1",children:["— ",r.error_message]})]})]})]})}function Z4(e){if(e<1)return`${(e*1e3).toFixed(0)}ms`;if(e<60)return`${e.toFixed(1)}s`;const t=Math.floor(e/60),r=(e%60).toFixed(0);return`${t}m ${r}s`}function K4({node:e}){const t=e.status,r=Fe[t]||Fe.pending,l=[];e.elapsed!=null&&l.push({label:"Elapsed",value:Jt(e.elapsed)}),e.exit_code!=null&&l.push({label:"Exit Code",value:e.exit_code}),e.error_type&&l.push({label:"Error",value:e.error_type}),e.error_message&&l.push({label:"Message",value:e.error_message});let a="";return e.stdout&&(a+=e.stdout),e.stderr&&(a+=(a?` --- stderr --- `:"")+e.stderr),y.jsxs("div",{className:"space-y-4",children:[y.jsxs("div",{className:"flex items-center gap-2",children:[y.jsx("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-[10px] font-bold uppercase tracking-wider",style:{backgroundColor:`${r}20`,color:r},children:t}),y.jsx("span",{className:"text-xs text-[var(--text-muted)]",children:"Script"})]}),y.jsx(sl,{items:l}),a&&y.jsx(nl,{output:a,title:"Output"})]})}function J4(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const W4=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,eD=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,tD={};function w1(e,t){return(tD.jsx?eD:W4).test(e)}const nD=/[ \t\n\f\r]/g;function rD(e){return typeof e=="object"?e.type==="text"?S1(e.value):!1:S1(e)}function S1(e){return e.replace(nD,"")===""}class ls{constructor(t,r,l){this.normal=r,this.property=t,l&&(this.space=l)}}ls.prototype.normal={};ls.prototype.property={};ls.prototype.space=void 0;function R_(e,t){const r={},l={};for(const a of e)Object.assign(r,a.property),Object.assign(l,a.normal);return new ls(r,l,t)}function lm(e){return e.toLowerCase()}class cn{constructor(t,r){this.attribute=r,this.property=t}}cn.prototype.attribute="";cn.prototype.booleanish=!1;cn.prototype.boolean=!1;cn.prototype.commaOrSpaceSeparated=!1;cn.prototype.commaSeparated=!1;cn.prototype.defined=!1;cn.prototype.mustUseProperty=!1;cn.prototype.number=!1;cn.prototype.overloadedBoolean=!1;cn.prototype.property="";cn.prototype.spaceSeparated=!1;cn.prototype.space=void 0;let iD=0;const Re=ul(),Tt=ul(),am=ul(),me=ul(),st=ul(),ua=ul(),vn=ul();function ul(){return 2**++iD}const om=Object.freeze(Object.defineProperty({__proto__:null,boolean:Re,booleanish:Tt,commaOrSpaceSeparated:vn,commaSeparated:ua,number:me,overloadedBoolean:am,spaceSeparated:st},Symbol.toStringTag,{value:"Module"})),Sp=Object.keys(om);class Vm extends cn{constructor(t,r,l,a){let o=-1;if(super(t,r),_1(this,"space",a),typeof l=="number")for(;++o4&&r.slice(0,4)==="data"&&uD.test(t)){if(t.charAt(4)==="-"){const o=t.slice(5).replace(k1,dD);l="data"+o.charAt(0).toUpperCase()+o.slice(1)}else{const o=t.slice(4);if(!k1.test(o)){let u=o.replace(sD,fD);u.charAt(0)!=="-"&&(u="-"+u),t="data"+u}}a=Vm}return new a(l,t)}function fD(e){return"-"+e.toLowerCase()}function dD(e){return e.charAt(1).toUpperCase()}const hD=R_([O_,lD,B_,I_,q_],"html"),Pm=R_([O_,aD,B_,I_,q_],"svg");function pD(e){return e.join(" ").trim()}var Kl={},_p,E1;function mD(){if(E1)return _p;E1=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,l=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,a=/^:\s*/,o=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,u=/^[;\s]*/,c=/^\s+|\s+$/g,d=` diff --git a/src/conductor/web/static/index.html b/src/conductor/web/static/index.html index 5c45558..f91ee07 100644 --- a/src/conductor/web/static/index.html +++ b/src/conductor/web/static/index.html @@ -5,7 +5,7 @@ Conductor Dashboard - + diff --git a/tests/test_engine/test_event_emission.py b/tests/test_engine/test_event_emission.py index 574c8d4..de1a4d0 100644 --- a/tests/test_engine/test_event_emission.py +++ b/tests/test_engine/test_event_emission.py @@ -20,6 +20,7 @@ LimitsConfig, OutputField, ParallelGroup, + ReasoningConfig, RouteDef, RuntimeConfig, WorkflowConfig, @@ -200,6 +201,84 @@ async def test_workflow_started_includes_routes(self) -> None: assert any(r["from"] == "a" and r["to"] == "b" for r in routes) assert any(r["from"] == "b" and r["to"] == "$end" for r in routes) + @pytest.mark.asyncio + async def test_workflow_started_includes_reasoning_effort(self) -> None: + """workflow_started includes per-agent reasoning_effort. + + - Agent with explicit reasoning.effort wins. + - Agent without explicit reasoning falls back to + runtime.default_reasoning_effort. + - When neither is set, the field is None. + """ + emitter, collector = _make_emitter_and_collector() + config = WorkflowConfig( + workflow=WorkflowDef( + name="reasoning-test", + entry_point="explicit", + runtime=RuntimeConfig(provider="copilot", default_reasoning_effort="medium"), + context=ContextConfig(mode="accumulate"), + limits=LimitsConfig(max_iterations=10), + ), + agents=[ + AgentDef( + name="explicit", + model="gpt-4", + prompt="explicit override", + reasoning=ReasoningConfig(effort="high"), + output={"x": OutputField(type="string")}, + routes=[RouteDef(to="default")], + ), + AgentDef( + name="default", + model="gpt-4", + prompt="uses workflow default", + output={"y": OutputField(type="string")}, + routes=[RouteDef(to="$end")], + ), + ], + output={"y": "{{ default.output.y }}"}, + ) + provider = CopilotProvider( + mock_handler=lambda a, p, c: {"x": "1"} if a.name == "explicit" else {"y": "2"} + ) + engine = WorkflowEngine(config, provider, event_emitter=emitter) + await engine.run({}) + + event = collector.first("workflow_started") + agents = {a["name"]: a for a in event.data["agents"]} + assert agents["explicit"]["reasoning_effort"] == "high" + assert agents["default"]["reasoning_effort"] == "medium" + + @pytest.mark.asyncio + async def test_workflow_started_reasoning_effort_unset_is_none(self) -> None: + """When neither agent nor workflow default sets effort, field is None.""" + emitter, collector = _make_emitter_and_collector() + config = WorkflowConfig( + workflow=WorkflowDef( + name="no-reasoning", + entry_point="agent1", + runtime=RuntimeConfig(provider="copilot"), + context=ContextConfig(mode="accumulate"), + limits=LimitsConfig(max_iterations=10), + ), + agents=[ + AgentDef( + name="agent1", + model="gpt-4", + prompt="no reasoning anywhere", + output={"result": OutputField(type="string")}, + routes=[RouteDef(to="$end")], + ), + ], + output={"result": "{{ agent1.output.result }}"}, + ) + provider = CopilotProvider(mock_handler=lambda a, p, c: {"result": "done"}) + engine = WorkflowEngine(config, provider, event_emitter=emitter) + await engine.run({}) + + event = collector.first("workflow_started") + assert event.data["agents"][0]["reasoning_effort"] is None + class TestAgentEvents: """Tests for agent_started, agent_completed, and agent_failed events."""