
    Ji                         d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	 d dl
mZmZmZ d dlmZmZmZ d dlmZmZ e G d d	             Ze G d
 d             Ze G d d             ZdededefdZ	 ddedee   defdZy)    )	dataclass)ListOptional)Workflow)
StepConfigStepFunction)HumanResponseEventInputRequiredEvent	StopEvent)WorkflowGraphEdgeWorkflowGraphNodeWorkflowGraphNodeEdges)get_steps_from_classget_steps_from_instancec                   d    e Zd ZU dZeed<   eed<   eed<   dZee   ed<   dZee	   ed<   de
fd	Zy)
DrawWorkflowNodez(Represents a node in the workflow graph.idlabel	node_typeNtitle
event_typereturnc                     t        | j                  | j                  | j                  | j                  | j
                  r| j
                  j                        S d       S )Nr   r   r   r   r   )r   r   r   r   r   r   __name__selfs    p/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/workflows/representation_utils.pyto_response_modelz"DrawWorkflowNode.to_response_model"   sO     ww**nn**37??t//
 	

 IM
 	
    )r   
__module____qualname____doc__str__annotations__r   r   r   typer   r    r    r   r   r      sB    2GJNE8C=  
#4 
r    r   c                   2    e Zd ZU dZeed<   eed<   defdZy)DrawWorkflowEdgez)Represents an edge in the workflow graph.sourcetargetr   c                 D    t        | j                  | j                        S )N)r*   r+   )r   r*   r+   r   s    r   r   z"DrawWorkflowEdge.to_response_model3   s     ;;;;
 	
r    N)r   r!   r"   r#   r$   r%   r   r   r'   r    r   r)   r)   ,   s    3KK
#4 
r    r)   c                   >    e Zd ZU dZee   ed<   ee   ed<   defdZ	y)DrawWorkflowGraphz2Intermediate representation of workflow structure.nodesedgesr   c                     t        | j                  D cg c]  }|j                          c}| j                  D cg c]  }|j                          c}      S c c}w c c}w )Nr/   r0   )r   r/   r   r0   )r   nodeedges      r   r   z#DrawWorkflowGraph.to_response_modelA   sK    %8<

C4))+C8<

C4))+C
 	
CCs
   AA
N)
r   r!   r"   r#   r   r   r%   r)   r   r   r'   r    r   r.   r.   :   s*    < !! !!
#9 
r    r.   r   
max_lengthr   c                 8    t        |       |k  r| S | d|dz
    dS )zHelper to truncate long labels.N   *)len)r   r5   s     r   _truncate_labelr:   H   s,    J*,5OU;KZ!^5L4MQ2OOr    Nworkflowmax_label_lengthc                    t        |       }|st        |       }g }g }t               }d}d}|j                         D ]:  \  }}	|	j                  }|j
                  D ]  }
t        |
t              s|
} n |s: n |j                         D ])  \  }}	|	j                  }|rt        ||      n|}|rt        |      |kD  r|nd}||vr/|j                  t        ||d|             |j                  |       |j                  D ]  }|t        k(  r||k7  r|rt        |j                  |      n|j                  }|r$t        |j                        |kD  r|j                  nd}|j                  |vsm|j                  t        |j                  |d||             |j                  |j                          |j
                  D ]  }
|
t        d      u r|rt        |
j                  |      n|
j                  }|r$t        |
j                        |kD  r|
j                  nd}|
j                  |vrD|j                  t        |
j                  |d||
             |j                  |
j                         t        |
t               sd|vs|j                  t        ddd             |j                  d        , |j                         D ]4  \  }}	|	j                  }|j
                  D ]j  }
|
t        d      ur%|j                  t#        ||
j                               t        |
t               sF|j                  t#        |
j                  d             l |j                  D ]  }|d	k(  r8t        |t              r(|rK|j                  t#        |j                  |             n%|j                  t#        |j                  |             t        |t$              sv|j                  t#        d|j                                7 t'        ||
      S )z?Extract workflow structure into an intermediate representation.Nstep)r   r   r   r   eventr   external_stepexternal)r   r   r   _doner2   )r   r   setitems_step_configreturn_types
issubclassr   r:   r9   appendr   addaccepted_eventsr   r&   r
   r)   r	   r.   )r;   r<   stepsr/   r0   added_nodesstep_configcurrent_stop_event	step_name	step_funcreturn_type
step_label
step_titler   event_labelevent_titlereturn_labelreturn_titles                     r   extract_workflow_structurerX   M   s   
 &:(%CE'1EE%K(,K  % 		9,,&33 	K+y1%0"	
 	 !& ^1	9,,
   I'78 	  C	N5E$E  	 K'LL  $$$	 OOI& &55 	5JY&:9K+K $  
 3 35EF((  $J,?,?(@CS(S ##  ""+5$%..)"))#- 
 3 343	58 '33 '	1Kd4j( $   4 46FG ))  $K,@,@(ADT(T $$  ##;6$&//*")*#.  4 45 ;(:;#;6$*-", 0O'	1o^1B !& U	9,, '33 	VK$t*,-i9M9MNO+'9:-k.B.BOTU	V &55 
	UJG#
:y(I%LL();)D)DiP -j.A.A9MN*&89-oz?R?RST
	UU0 566r    )N)dataclassesr   typingr   r   	workflowsr   workflows.decoratorsr   r   workflows.eventsr	   r
   r   workflows.protocolr   r   r   workflows.utilsr   r   r   r)   r.   r$   intr:   rX   r'   r    r   <module>ra      s    ! !  9 
 
 
 
 
* 

 

 

 

 

 

P3 PC PC P ;?W7W7*23-W7W7r    