
    i                        d Z ddlmZ ddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z!  ed      Z"e G d d             Z#e G d d             Z$dede	e%   de%fdZ&de!de%de
ee%ef      dee%e'e   f   fdZ(dee%ef   defdZ)d d d d d d!dee%ef   d"e%de	e
ee%ef         de	e%   d#e	e%   d$e	ee%ef      d%e	eee%f      de$fd&Z*y )'z5SDK helpers for executing workflows from Python code.    )	dataclass)datetime)Path)AnyDictOptionalSequenceUnion)load_config)LogLevel)GraphConfig)Message) ensure_schema_registry_populated)AttachmentStore)ValidationError)YAML_DIR)TaskInputBuilder)GraphExecutor)GraphContext	WareHousec                   p    e Zd ZU eed<   eed<   ee   ed<   eeeef      ed<   eeeef      ed<   eed<   y)WorkflowMetaInfosession_name	yaml_filelog_idoutputstoken_usage
output_dirN)	__name__
__module____qualname__str__annotations__r   r   r   r        8/Users/bowang/.openclaw/workspace/ChatDev/runtime/sdk.pyr   r      sC    NSMd38n%%$sCx.))r%   r   c                   (    e Zd ZU ee   ed<   eed<   y)WorkflowRunResultfinal_message	meta_infoN)r   r    r!   r   r   r#   r   r$   r%   r&   r(   r(   "   s    G$$r%   r(   	yaml_pathr   returnc                     |r |j                         r|j                         S t        j                         j                  d      }d| j                   d| S )Nz%Y%m%d%H%M%Ssdk__)stripr   nowstrftimestem)r+   r   	timestamps      r&   _normalize_session_namer5   (   sM    **,!!##''7I)..!9+..r%   graph_contextpromptattachmentsc                    |s|S | j                   dz  dz  }|j                  dd       t        |      }t        |      }|D cg c]$  }t	        t        |      j                               & }}|j                  ||      S c c}w )Ncode_workspacer8   T)parentsexist_ok)	directorymkdirr   r   r"   r   
expanduserbuild_from_file_paths)r6   r7   r8   attachments_dirstorebuilderpathnormalized_pathss           r&   _build_task_inputrF   /   s    
 #--0@@=PO$6O,Eu%GALMDJ1134M((1ABB Ns   )Br   c                 <   t        |       j                         }|j                         r|S |j                         r|S t        t              j                         j                  d   }t        j                         rt        n|t        z  }||z  j                         S )N   )r   r?   is_absoluteexists__file__resolver;   r   )r   	candidate	repo_root	yaml_roots       r&   _resolve_yaml_pathrP   ?   s    Y**,IX&&(003I$002X9MI	!--//r%   N)r8   r   	fn_module	variables	log_leveltask_promptrQ   rR   rS   c                   t                t        |       }|j                         st        d|       |xs g }|r|j	                         s|st        ddt        |      i      t        |||      }t        ||      }	t        j                  |j                  |	t        t        |      |j                        }
|r5t        |t              rt!        |      n|}||
_        ||
j$                  _        t'        |
      }t)        |||      }t+        j,                  ||      }|j/                         }|j0                  r|j0                  j3                         nd}|r|j4                  nd}|j6                  r|j6                  j9                         nd}t;        |	t        |      ||j<                  ||j>                  	      }tA        ||
      S )zBRun a workflow YAML and return the end-node message plus metadata.zYAML file not found: zTask prompt cannot be emptytask_prompt_provided)details)rQ   vars_override)nameoutput_rootsource_pathvars)configN)r   r   r   r   r   r   )r)   r*   )!r   rP   rJ   FileNotFoundErrorr0   r   boolr   r5   r   from_definitiongraphOUTPUT_ROOTr"   r\   
isinstancer   rS   
definitionr   rF   r   execute_graphget_final_output_messagelog_manager
get_loggerworkflow_idtoken_trackerget_token_usager   r   r=   r(   )r   rT   r8   r   rQ   rR   rS   r+   designnormalized_sessiongraph_configresolved_levelr6   
task_inputexecutorr)   loggerr   r   r*   s                       r&   run_workflowrs   J   s    %&"9-I"7	{ CDD#K{002K)+T+->?
 	

 iyQF0LI..	N[[L 0:9c0J),PY!/,:) 5M"=+{KJ**=*EH557M2:2F2FX!!,,.DF#)VtF>F>T>T(((88:Z^K 'i.   **I =INNr%   )+__doc__dataclassesr   r   pathlibr   typingr   r   r   r	   r
   check.checkr   entity.enumsr   entity.graph_configr   entity.messagesr   runtime.bootstrap.schemar   utils.attachmentsr   utils.exceptionsr   server.settingsr   utils.task_inputr   workflow.graphr   workflow.graph_contextr   rb   r   r(   r"   r5   listrF   rP   rs   r$   r%   r&   <module>r      s   ; !   7 7 # ! + # E - , $ - ( / ;         
/t /8C= /S /CCC %T	*+C 3W	C 0%T	"2 0t 0 9="&#*.04;OS$Y;O ;O (5d#345	;O
 3-;O };O S#X';O hm,-;O ;Or%   