
    *"hj.                        d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZ  ej                  d      Zdd	Zdd
Zddd	 	 	 	 	 ddZddZedk(  r e        yy)u2   
CLI entry point — ``python -m evolve_server``.
    )annotationsN   )EvolveServerConfig)AgentEvolveServer)EvolveServerevolve_serverc                   t        j                         }| j                  r1	 ddlm}  |       j                         }t        j                  |      }| j                  r| j                  |_
        | j                  r| j                  |_        | j                  s| j                  r0| j                  xs | j                  |_        |j                  |_        | j                  s| j                  r0| j                  xs | j                  |_        |j                  |_        | j                   r| j                   |_        | j"                  r$| j"                  |_        |j                  sd|_        |j                  sx| j                  s| j                  rd|_        nX|j                  sE|j                  r@t%        t'        |dd      xs d      j)                         j+                         d	k7  rd
|_        | j,                  r| j,                  |_        | j.                  r| j.                  |_        | j2                  r| j2                  |_        | j4                  r| j4                  |_        | j8                  r| j8                  |_        | j<                  r| j<                  |_        | j>                  r| j>                  |_        | j@                  | j@                  |_         | jB                  | jB                  |_!        | jD                  | jD                  |_"        | jF                  | jF                  |_#        | jH                  | jH                  |_$        | jJ                  | jJ                  |_%        | jL                  r| jL                  |_&        | jN                  r| jN                  |_'        | jP                  r| jP                  |_(        | jR                  r| jR                  |_)        | jT                  r| jT                  |_+        | jX                  | jX                  |_,        |j[                          |S # t        $ r!}t        j                  d|       Y d}~d}~ww xY w)zGMerge CLI args, environment variables, and optionally skillclaw config.r   )ConfigStoreu;   Could not load skillclaw config: %s — falling back to envNlocalossskill_storage_backend nacoss3).r   from_envuse_skillclaw_configskillclaw.config_storer
   to_skillclaw_configfrom_skillclaw_config	Exceptionloggerwarningenginestorage_backendstorage_endpointoss_endpointstorage_bucket
oss_bucketstorage_region
local_rootstrgetattrstriplowergroup_idmodel	llm_modelllm_api_typeintervalinterval_secondsport	http_portpublish_modenacos_publish_modeuse_skill_verifierskill_verifier_min_scorevalidation_required_resultsvalidation_required_approvalsvalidation_min_mean_scorevalidation_max_rejectionsopenclaw_binopenclaw_homeagent_timeoutworkspace_root	agents_mdagents_md_pathfresh__post_init__)argsconfigr
   	sc_configes        1/root/.hermes/SkillClaw/evolve_server/__main__.py_build_config_from_argsrB      sf   ((*F  	]:#99;I'==iHF {{!%!5!5 1 1"&"7"7"L4;L;L$55doo $ 3 3 Ft"11 $ 3 3 OO%%%,F"!!%*F"""##GF$;R@FBGMMOUUW[bb%)F"}}--zz::"//}}"&--yy99"//$($;$;!*$($;$;!$$0*.*G*G'''3-1-M-M*))5/3/Q/Q,%%1+/+I+I(%%1+/+I+I("//#11#11 $ 3 3~~ $zzzz
MG  	]NNXZ[\\	]s   0P& &	Q/QQc                    t        j                  d      } | j                  dddgd d       | j                  dd	d
       | j                  dd	d       | j                  dt        d d       | j                  dt        d d       | j                  dt        d d       | j                  dddgd d       | j                  dg dd d       | j                         }|j                  ddd	d d       |j                  d dd!d"#       | j                  d$t        d d%       | j                  d&t        d d'       | j                  d(t        d d)       | j                  d*t        d d+       | j                  d,t        d d-       | j                  d.t        d d/       | j                  d0t        d g d1d23       | j                  d4t        d d5       | j                  d6t        d d7       | j                  d8t        d 9       | j                  d:t        d 9       | j                  d;t        d 9       | j                  d<t        d 9       | j                  d=t        d 9       | j                  d>t        d d?       | j                  d@d	dA       | j                  dBt        d dC       | j                  dDt        d dE       | j                         }|j                  dFdGd	d dH       |j                  dIdGd!dJ#       | j                  dKt        d dL       | j                  dMt        d dN       | j                  dOt        d dP       | j                  dQdRd	S       | S )TNzSkillClaw Evolve Server)descriptionz--engineworkflowagentz3Evolution engine: fixed workflow or OpenClaw agent.)choicesdefaulthelpz--once
store_truezRun once and exit)actionrI   z--mockz:Use local mock/ directory instead of remote object storagez--mock-rootz#Custom root directory for mock mode)typerH   rI   z--portz'HTTP trigger port (enables HTTP server)z
--intervalzPeriodic interval in secondsz--publish-modedirect	validatedzRDirect publish to skills/ or stage jobs for client-side validation before publish.z--nacos-publish-mode)draftreviewrM   zVNacos Skill lifecycle mode: draft only, submit for review, or publish latest directly.z--skill-verifierr/   zHEnable optional skill verification before upload (workflow engine only).)destrK   rH   rI   z--no-skill-verifierstore_falsez2Disable optional skill verification before upload.)rQ   rK   rI   z--skill-verifier-min-scorezEMinimum verifier score in [0, 1] required before a skill is uploaded.z--validation-required-resultszQMinimum client validation results required before a candidate skill is published.z--validation-required-approvalszCMinimum accepted client validation results required before publish.z--validation-min-mean-scorezGMinimum mean client validation score in [0, 1] required before publish.z--validation-max-rejectionszLReject the candidate once this many client validation rejections accumulate.z--modelzLLM model to usez--llm-api-type)zopenai-completionszanthropic-messageszopenai-responseszgoogle-generative-aiollamaz8LLM provider API type. Primarily used by --engine agent.)rL   rH   rG   rI   z
--group-idzShared storage group IDz--storage-backendz"Storage backend: local, s3, or ossz--storage-endpoint)rL   rH   z--storage-bucketz--storage-regionz--oss-endpointz--oss-bucketz--local-rootz0Use a local directory as the evolve backend rootz--use-skillclaw-configzBLoad shared storage and LLM settings from skillclaw's config storez--openclaw-binz.Path to openclaw executable for --engine agentz--openclaw-homez*OPENCLAW_HOME directory for --engine agentz--freshr;   z/Wipe agent state each cycle (agent engine only)z
--no-freshz6Preserve agent state across cycles (agent engine only)z--agent-timeoutz"Agent execution timeout in secondsz--workspace-rootz-Workspace directory for agent file operationsz--agents-mdz-Custom EVOLVE_AGENTS.md path for agent enginez	--verbosez-v)rK   )argparseArgumentParseradd_argumentr!   intadd_mutually_exclusive_groupfloat)parserskill_verifier_groupfresh_groups      rA   build_parserr]   c   s   $$1JKF
W%B	   <OP
,h   CDij
sD?hi
3Cab
;'a	   -e	   ">>@%%!W &  %%!A	 &  $T	   '`	   )R	   %V	   %[	   	T@RS
rG   3C\]
+#tJno
,3E
*dC
*dC
(sDA
S$?
?	    Q  
 (sDGwx
)THtu557K>   7=?w   )THlm
d9h   CDst
T,?M    Fmock	mock_rootc               X    | j                   dk(  rt        | ||      S t        | ||      S )NrF   r_   )r   r   r   )r>   r`   ra   s      rA   _build_serverrc      s.     }} diHHTY??r^   c                 @   t               } | j                         }t        j                  |j                  rt        j
                  nt        j                  d       t        |      |j                  sBj                  xs dj                         j                         }|dk(  r-j                  st        j                  d       t        d      |dk(  r8j                   rj"                  st        j                  d       t        d      |syt%        t'        d	d      xs d      j                         j                         d
k(  r t        j                  d       t        d      t        j                  d       t        d      j"                  s t        j                  d       t        d      t)        |j                  |j*                        |j,                  s|j                  rEt/        j0                  j3                               }t5        t7        j8                  |dd             y |j:                  7dd lj?                         fd}t/        j0                   |              y t/        j0                  jA                                y )Nz0%(asctime)s [%(name)s] %(levelname)s %(message)s)levelformatr   r   zILocal storage backend requires --local-root or EVOLVE_STORAGE_LOCAL_ROOT.r   r   zOSS backend requires endpoint and bucket. Set EVOLVE_STORAGE_ENDPOINT / EVOLVE_STORAGE_BUCKET, use legacy EVOLVE_OSS_* vars, or use --use-skillclaw-config.r   r   zsharing.skill_backend=nacos stores skill assets only. Configure session storage with sharing.backend, sharing.session_backend, sharing.local_root, EVOLVE_STORAGE_*, or use --mock.zStorage backend is not configured. Set EVOLVE_STORAGE_BACKEND, use --use-skillclaw-config, use --local-root for local mode, or use --mock.zStorage bucket is required for remote backends. Set EVOLVE_STORAGE_BUCKET, use legacy EVOLVE_OSS_BUCKET, use --use-skillclaw-config, use --local-root for local mode, or use --mock.r_      F)indentensure_asciir   c                    K   j                  dj                  d      } j                  |       }t        j                  j                         |j                                d {    y 7 w)Nz0.0.0.0info)hostr+   	log_level)Configr,   Serverasynciogatherrun_periodicserve)	uv_config	uv_serverappr>   serveruvicorns     rA   _run_with_httpzmain.<locals>._run_with_http  s`     %% 	 ' I  y1I..!4!4!6	8IJJJs   A&A1)A/*A1)!r]   
parse_argsloggingbasicConfigverboseDEBUGINFOrB   r`   r   r#   r$   r    r   error
SystemExitr   r   r!   r"   rc   ra   oncerp   runrun_onceprintjsondumpsr+   rx   create_http_apprr   )	rZ   r=   backendsummaryry   rv   r>   rw   rx   s	        @@@@rA   mainr      s   ^FD#||gmmA
 %T*F99))/R668>>@g$$hi m#**&2G2G5
 !m#76#:B?E2FLLNTTVZaau !m#LLB Q-((b
 !m#6		T^^LFyyDII++foo/0djj?@yy$$&	K 	N$%F'')*r^   __main__)r=   zargparse.Namespacereturnr   )r   zargparse.ArgumentParser)r>   r   r`   boolra   z
str | None)r   None)__doc__
__future__r   rT   rp   r   r{   core.configr   engines.agentr   engines.workflowr   	getLoggerr   rB   r]   rc   r   __name__ r^   rA   <module>r      s    #     + , *			?	+M`tt  	@@ @ 	@F+R zF r^   