§
     ’Þj`S ã                  ó"  — d dl mZ d dlZd dlZd dlZd dl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mZ d dlZd dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl1m4Z5 d d	l1m6Z6m7Z7 d d
l8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZW d dlXmYZYmZZZ d dl[m\Z\m]Z]m^Z^ dZ_dZ`d\  ZaZb ejc        ¦   «         ZddZedZfdZg eheji         j                    egd¦  «        ¦  «         k                    ¦   «          l                    ¦   «         dv Zmd&d„Zn ed¬¦  «         G d„ d ¦  «        ¦   «         Zod'd"„Zp G d#„ d$¦  «        Zqd(d%„ZrdS ))é    )ÚannotationsN)Ú	dataclass)ÚAnyÚCallable)Úconfig_lockÚwrite_config)ÚDEEPY_CONTEXT_TOKENS_DEFAULTÚDEEPY_CONTEXT_TOKENS_KEYÚ#DEEPY_ZERO_CUSTOM_SYSTEM_PROMPT_KEYÚDEEPY_ENABLED_KEYÚ$DEEPY_PRIME_CUSTOM_SYSTEM_PROMPT_KEYÚDEEPY_PRIME_MCP_SERVERS_KEYÚ(DEEPY_SESSION_GALLERY_MEDIA_MODE_DEFAULTÚ$DEEPY_SESSION_GALLERY_MEDIA_MODE_KEYÚDEEPY_MULTI_SESSION_DEFAULTÚDEEPY_MULTI_SESSION_KEYÚDEEPY_TYPE_KEYÚDEEPY_TYPE_PRIMEÚDEEPY_VRAM_MODE_KEYÚDEEPY_VRAM_MODE_UNLOADÚDEEPY_QWEN_ENHANCER_IDSÚdeepy_availableÚdeepy_requirement_errorÚdeepy_requirement_metÚnormalize_deepy_enabledÚnormalize_deepy_context_tokensÚnormalize_deepy_typeÚ!normalize_deepy_prime_mcp_serversÚ*normalize_deepy_session_gallery_media_modeÚnormalize_deepy_multi_sessionÚnormalize_deepy_session_modeÚDEEPY_MULTI_SESSION_DEDICATEDÚnormalize_deepy_vram_modeÚset_deepy_runtime_config)ÚPRIME_SYSTEM_PROMPTÚZERO_SYSTEM_PROMPT)Úui_settings)Úmedia_registryÚsession_store)Údeepy_log_scope)ÚDeepyPublicationQueue)ÚAssistantEngineÚAssistantRuntimeHooksÚAssistantSessionStateÚbegin_assistant_replay_turnÚbegin_assistant_turnÚbuild_interruption_noticeÚclear_assistant_pauseÚclear_assistant_steeringÚclear_assistant_sessionÚget_or_create_assistant_sessionÚmark_assistant_turn_messageÚrecord_interruption_historyÚrequest_assistant_interruptÚrequest_assistant_pauseÚrequest_assistant_steeringÚrequest_assistant_resetÚresume_assistantÚset_assistant_debugÚset_assistant_tool_ui_settingsÚDeepyZeroTools)Úassistant_chat)ÚAsyncStreamÚasync_run_inÚpromote_async_taskÚpromote_async_tasks)Úis_remote_engineÚresolve_role_engine)Úacquire_GPU_ressourcesÚrelease_GPU_ressourcesÚunregister_GPU_residentÚdeepyz+Deepy is disabled in Configuration > Deepy.)Úagent_visionzAgent Visual Inspectioné   gš™™™™™©?ÚWAN2GP_DEEPY_STREAM_TRACEÚ0>   Ú1ÚyÚonÚyesÚtrueÚfirst_payloadÚstrÚreturnc                ó¬  — |g}t          j        t          ¦  «         t          |¦  «        t          k     r�|                      ¦   «         }t          |t          ¦  «        rt          |¦  «        dk     s|d         dk    rnD|                      ¦   «         \  }}| 	                    |¦  «         t          |¦  «        t          k     °�t          j        |¦  «        S )Né   r   Úchat_output)ÚtimeÚsleepÚ_CHAT_BATCH_MAX_SECONDSÚlenÚ_CHAT_BATCH_MAX_EVENTSÚtopÚ
isinstanceÚtupleÚpopÚappendr@   Úbuild_event_batch)Úoutput_queuerT   ÚpayloadsÚ	next_itemÚ_cmdÚnext_payloads         ú?C:\Users\johnn\OneDrive\Documents\AI\shared\deepy\controller.pyÚ_drain_chat_output_batchrk   [   sÀ   € Øˆ€HÝ„JÕ&Ñ'Ô'Ð'Ý
ˆh‰-Œ-Õ0Ò
0Ð
0Ø ×$Ò$Ñ&Ô&ˆ	Ý˜)¥UÑ+Ô+ð 	­s°9©~¬~ÀÒ/AÐ/AÀYÈqÄ\ÐUbÒEbÐEbØØ)×-Ò-Ñ/Ô/ÑˆˆlØ�Š˜Ñ%Ô%Ð%õ ˆh‰-Œ-Õ0Ò
0Ð
0õ Ô+¨HÑ5Ô5Ð5ó    T)Úslotsc                  óì   — e Zd ZU ded<   ded<   ded<   ded<   d	ed
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   d ed!<   d"ed#<   d"ed$<   d%ed&<   d'S )(Ú	DeepyDepszCallable[[], dict[str, Any]]Úget_server_configzCallable[[], str]Úget_server_config_filenamezCallable[[], int]Úget_verbose_levelzCallable[..., tuple[Any, int]]Ú resolve_prompt_enhancer_settingszCallable[[Any], str]Úget_state_model_typezCallable[[str], Any]Úget_model_defzCallable[..., tuple[Any, Any]]Úensure_prompt_enhancer_loadedúCallable[[], None]Úunload_prompt_enhancer_runtimezCallable[[], Any]Úget_image_caption_modelÚget_image_caption_processorÚget_enhancer_offloadobjzCallable[[Any], None]Úacquire_gpuzCallable[..., None]Úrelease_gpuÚregister_gpu_residentÚclear_gpu_residentÚget_new_refresh_idzCallable[[Any], dict[str, Any]]Úget_gen_infozBCallable[[dict[str, Any]], dict[str, tuple[list[Any], list[Any]]]]Úget_processed_queuez Callable[[str, bool, bool], str]Úget_output_filepathzCallable[..., Any]Úrecord_file_metadataÚexec_prompt_enhancer_enginezCallable[[Any], Any]Úclear_queue_actionN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© rl   rj   ro   ro   g   s  € € € € € € à3Ð3Ð3Ñ3Ø1Ð1Ð1Ñ1Ø(Ð(Ð(Ñ(ØDÐDÐDÑDØ.Ð.Ð.Ñ.Ø'Ð'Ð'Ñ'ØAÐAÐAÑAØ6Ð6Ð6Ñ6Ø.Ð.Ð.Ñ.Ø2Ð2Ð2Ñ2Ø.Ð.Ð.Ñ.Ø&Ð&Ð&Ñ&Ø$Ð$Ð$Ñ$Ø.Ð.Ð.Ñ.Ø-Ð-Ð-Ñ-Ø)Ð)Ð)Ñ)Ø1Ð1Ð1Ñ1Ø[Ð[Ð[Ñ[Ø9Ð9Ð9Ñ9Ø,Ð,Ð,Ñ,Ø3Ð3Ð3Ñ3Ø,Ð,Ð,Ñ,Ð,Ð,rl   ro   ÚNonec                ó*   — ddl m}  || |¦  «         d S )Nr   )Úunload_prompt_enhancer_models)Úshared.prompt_enhancerrŽ   )Ú#prompt_enhancer_image_caption_modelÚprompt_enhancer_llm_modelrŽ   s      rj   Ú_unload_prompt_enhancer_runtimer’   �   s/   € ØDÐDÐDÐDÐDÐDà!Ð!Ð"EÐG`ÑaÔaÐaÐaÐarl   c                  ób  — e Zd Zdyd„Zdzd„Zd{d
„Zd|d„Zd}d„Zd~d„Zdd„Z	d€d„Z
d}d„Zd}d„Zddœd}d„Zd|d„Zd|d„Zd�d„Zd|d„Zed‚d„¦   «         Zd‚d „Zd!„ Zdƒd#„Zd|d$„Zd‚d%„Zd‚d&„Zd‚d'„Zd„d)„Zd…d*„Zd†d‡d0„Zdˆd2„Zd‰d3„Zd„d}d4„Z d+d+d+d+d+d+d+d+d+d+dd5œd6„Z!edŠd9„¦   «         Z"d‹d<„Z#dŒd=„Z$d�d>„Z%d?d?d+d+d@dAœdŽdK„Z&dL„ Z'd�dM„Z(d�dO„Z)d(dPœd‘dU„Z*d’d“dV„Z+d”d•dX„Z,d”d+d@dYœd–dZ„Z-d—d˜d[„Z.d�d\„Z/d™d^„Z0d…d_„Z1d}d`„Z2d}da„Z3dšde„Z4d›dg„Z5ddhœdœdj„Z6dd+dkœd�dn„Z7dždo„Z8dŸdp„Z9d dq„Z:d¡ds„Z;dŸdt„Z<d—du„Z=dv„ Z>d�dw„Z?dx„ Z@d+S )¢ÚDeepyControllerÚdepsro   c                ó6  — || _         d | _        t          j        ¦   «         | _        t          |                      ¦   «                              t          t          ¦  «        ¦  «        | _
        t          | j
        ¦  «        | _        d | _        d| _        d | _        d S )NF)Ú_depsÚ_active_assistant_sessionÚ	threadingÚRLockÚ_queue_state_lockr!   Ú_server_configÚgetr   r   Ú_session_moder    Ú_multi_session_enabledÚworkspace_hostÚ_multi_session_latchedÚrequest_listener)Úselfr•   s     rj   Ú__init__zDeepyController.__init__ˆ   s�   € ØˆŒ
Ø59ˆÔ&Ý!*¤Ñ!2Ô!2ˆÔÝ9¸$×:MÒ:MÑ:OÔ:O×:SÒ:SÕTkõ  nIñ  ;Jô  ;Jñ  Kô  KˆÔÝ&CÀDÔDVÑ&WÔ&WˆÔ#Ø"ˆÔØ&+ˆÔ#à $ˆÔÐÐrl   rV   Úintc                óv   — 	 t          | j                             ¦   «         pd¦  «        S # t          $ r Y dS w xY w)Nr   )r¥   r—   rr   Ú	Exception©r£   s    rj   rr   z!DeepyController.get_verbose_level“   sJ   € ð	Ý�t”z×3Ò3Ñ5Ô5Ð:¸Ñ;Ô;Ð;øÝð 	ð 	ð 	Ø�1�1ð	øøøs   ‚'* ª
8·8ÚmessagerU   rŒ   c                ó°   — |                       ¦   «         dk    r=t          d¬¦  «        5  t          d|› �¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )Né   T©Ústart_if_neededz[AssistantController] )rr   r*   Úprint)r£   r©   s     rj   Ú
_debug_logzDeepyController._debug_log™   s­   € Ø×!Ò!Ñ#Ô# qÒ(Ð(Ý °Ð6Ñ6Ô6ð :ð :ÝÐ8¨wÐ8Ð8Ñ9Ô9Ð9ð:ð :ð :ñ :ô :ð :ð :ð :ð :ð :ð :ð :øøøð :ð :ð :ð :ð :ð :ð )Ð(s   ©A	Á	AÁAÚboolc                ó¤   — 	 t          | j                             ¦   «         pd¦  «        dk    }n# t          $ r d}Y nw xY wt	          |¦  «         |S )Nr   r«   F)r¥   r—   rr   r§   r=   )r£   Údebug_enableds     rj   Ú_sync_debug_enabledz#DeepyController._sync_debug_enabledž   sf   € ð	"Ý ¤
× <Ò <Ñ >Ô >Ð CÀ!ÑDÔDÈÒIˆMˆMøÝð 	"ð 	"ð 	"Ø!ˆMˆMˆMð	"øøøå˜MÑ*Ô*Ð*ØÐs   ‚,/ ¯>½>údict[str, Any]c                ó8   — | j                              ¦   «         pi S ©N)r—   rp   r¨   s    rj   rœ   zDeepyController._server_config¦   s   € ØŒz×+Ò+Ñ-Ô-Ð3°Ð3rl   Ú
normalizedc                óè   — |                       ¦   «         }t          5  t          j        ||¦  «         |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «         d S )NzNew Deepy Setting Saved)rœ   r   Údeepy_ui_settingsÚ store_assistant_tool_ui_settingsÚ_write_server_configÚgrÚInfo)r£   r·   Úserver_configs      rj   Ú_persist_tool_ui_settingsz)DeepyController._persist_tool_ui_settings©   s®   € Ø×+Ò+Ñ-Ô-ˆÝð 	5ð 	5ÝÔ>¸}ÈjÑYÔYÐYØ×%Ò% mÑ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5õ 	ŒÐ)Ñ*Ô*Ð*Ð*Ð*s   œ+AÁAÁAr¾   c                ó   — t          | j                             ¦   «         pd¦  «                             ¦   «         }t          5  t          ||¦  «         t          |¦  «        dk    rt          ||¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚ r   )rU   r—   rq   Ústripr   r$   r]   r   )r£   r¾   Úserver_config_filenames      rj   r»   z$DeepyController._write_server_config°   sä   € Ý!$ T¤Z×%JÒ%JÑ%LÔ%LÐ%RÐPRÑ!SÔ!S×!YÒ!YÑ![Ô![ÐÝð 	Dð 	DÝ$ ]Ð4JÑKÔKÐKÝÐ)Ñ*Ô*¨QÒ.Ð.Ý˜]Ð,BÑCÔCÐCð	Dð 	Dð 	Dñ 	Dô 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Dð 	Døøøð 	Dð 	Dð 	Dð 	Dð 	Dð 	Ds   Á4BÂBÂ
BÚenabledc                ó¢   — t           5  |                      ¦   «         }||d<   |                      |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚdeepy_compact_actions)r   rœ   r»   )r£   rÄ   r¾   s      rj   Úset_compact_actionsz#DeepyController.set_compact_actions·   sœ   € Ýð 	5ð 	5Ø ×/Ò/Ñ1Ô1ˆMØ5<ˆMÐ1Ñ2Ø×%Ò% mÑ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð 	5ð 	5s   ˆ/AÁAÁAc                ó   — |                       ¦   «         t          k    r:t          |                      ¦   «                              t
          i ¦  «        ¦  «        ni }dt          |j        pg ¦  «        d„ |                     ¦   «         D ¦   «         dœS )NrX   c                ó@   — g | ]\  }}||d          t           › d|› �dœ‘ŒS )Ú	transportú.)ÚnamerÊ   Úconfig_reference)r   )Ú.0rÌ   Úconfigs      rj   ú
<listcomp>z8DeepyController._session_environment.<locals>.<listcomp>Â   sv   € ð  oð  oð  oñ  O[ð  OSð  U[ T¸¸{Ô8KÕdð  bIð  bIð  CGð  bIð  bIð  Jð  Jð  oð  oð  orl   )Úschema_versionÚskillsÚmcp_servers)	Úget_deepy_typer   r   rœ   r�   r   ÚlistÚactive_skillsÚitems)r£   ÚsessionÚserverss      rj   Ú_session_environmentz$DeepyController._session_environment½   sÑ   € Øsw÷  tGò  tGñ  tIô  tIõ  M]ò  t]ð  t]Õ3°D×4GÒ4GÑ4IÔ4I×4MÒ4MÕNiÐkmÑ4nÔ4nÑoÔoÐoð  ceˆàÝ˜7Ô0Ð6°BÑ7Ô7ð oð  oð  _f÷  _lò  _lñ  _nô  _nð  oñ  oô  oð
ð 
ð 	
rl   c                ó<  — t          j        |                      ¦   «         ¦  «        }t          |d         ¦  «        }|rt          j        nt          j        |d<   |st          j        |d<   |                     | j	        | j
        |d         | j
        k    d¬¦  «         |S )NÚmulti_sessionÚ
reset_modeÚgallery_media_modeF)Úeffective_multi_sessionÚeffective_session_modeÚrestart_requiredÚunsaved_changes)r¹   Ú+get_persisted_assistant_session_ui_settingsrœ   r    r)   ÚRESET_MODE_NEWÚRESET_MODE_RESETÚGALLERY_MEDIA_LINKÚupdaterŸ   rž   )r£   ÚsettingsrÄ   s      rj   Úget_session_ui_settingsz'DeepyController.get_session_ui_settingsÅ   s¾   € Ý$ÔPÐQU×QdÒQdÑQfÔQfÑgÔgˆÝ/°¸Ô0IÑJÔJˆØAHÐ!l¥Ô!=Ð!=ÍmÔNlˆ�ÑØð 	NÝ-:Ô-MˆHÐ)Ñ*Ø�Š°Ô0KÐdhÔdvð  JRð  Sbô  Jcð  gkô  gyò  Jyð  KPˆñ  	Qô  	Qð  	QØˆrl   F)Úpersistc          	     óD  — | j         �| j                              ¦   «         nd}t          |¦  «        }t          |¦  «        }t	          j        |                      ¦   «         ¦  «        }	| j        s|| _        || _	        |rt          |¦  «        nt          j        }
|| j        | j	        || j	        k    |rt          j        nt          j        |
||	d         k    p|o|
|	d         k    dœ}t          |¦  «        }| j        rt          |¦  «        nt          j        |_        |j        r|j        st          j        |¦  «         |rq|                      ¦   «         }t(          5  t	          j        |||d         |d         ¬¦  «         |                      |¦  «         d d d ¦  «         n# 1 swxY w Y   d|d<   | j         �h| j                              ¦   «          | j                              ¦   «         |k    r2| j                              d| j                              ¦   «         ¦  «         |S )	NFrÜ   rÞ   )rÜ   rß   rà   rá   rÝ   rÞ   râ   rÝ   )rÜ   rÝ   rÞ   râ   Úgallery)r    Ú_deepy_workspace_lockedr    r!   r¹   rã   rœ   r¡   rŸ   rž   r   r)   ræ   rä   rå   r5   rÞ   Ústorage_session_idÚworker_activeÚschedule_autosaver   Ú#store_assistant_session_ui_settingsr»   Úpublish_workspacesÚpublishÚgallery_snapshot)r£   ÚstaterÜ   rÝ   rÞ   rê   Úworkspace_lockedÚrequested_multi_sessionÚrequested_modeÚ	persistedÚnormalized_gallery_moder·   rØ   r¾   s                 rj   Úupdate_session_ui_settingsz*DeepyController.update_session_ui_settingsÎ   sÎ  € ØLPÔL_ÐLk˜4Ô.×FÒFÑHÔHÐHÐqvÐÝ"?ÀÑ"NÔ"NÐÝ5°mÑDÔDˆÝ%ÔQÐRV×ReÒReÑRgÔRgÑhÔhˆ	ØÔ*ð 	0Ø*AˆDÔ'Ø!/ˆDÔØd{ð  #bÕ"LÐM_Ñ"`Ô"`Ð"`õ  BOô  BbÐà+Ø'+Ô'BØ&*Ô&8Ø .°$Ô2DÒ DØ:QÐu�-Ô6Ð6ÕWdÔWuØ"9Ø-°¸?Ô1KÒKð   hÐPgð  Qgð  mDð  HQð  Rfô  Hgò  mgð
ð 
ˆ
õ 2°%Ñ8Ô8ˆØgkô  hCð  &iÕ%OÐPbÑ%cÔ%cÐ%cõ  IVô  IiˆÔ"ØÔ%ð 	5¨gÔ.Cð 	5ÝÔ+¨GÑ4Ô4Ð4Øð 	2Ø ×/Ò/Ñ1Ô1ˆMÝð 9ð 9Ý!ÔEÀmÐcqð  Ið  JVô  Wð  lvð  wKô  lLð  Mñ  Mô  Mð  MØ×)Ò)¨-Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð -2ˆJÐ(Ñ)ØÔÐ*ØÔ×2Ò2Ñ4Ô4Ð4ØÔ"×:Ò:Ñ<Ô<Ð@PÒPÐPØÔ#×+Ò+¨I°tÔ7J×7[Ò7[Ñ7]Ô7]Ñ^Ô^Ð^ØÐs   Å:F!Æ!F%Æ(F%c                ó   — | j         S r¶   )rŸ   r¨   s    rj   Úmulti_session_enabledz%DeepyController.multi_session_enabledð   s   € ØÔ*Ð*rl   c                ó"   — | j         t          k    S r¶   )rž   r"   r¨   s    rj   Údedicated_workspace_enabledz+DeepyController.dedicated_workspace_enabledó   s   € ØÔ!Õ%BÒBÐBrl   rÝ   c                ó\  — | j         rt          j        nt          j        }t	          j        ¦   «         }|j        5  t	          j        ¦   «         }|j        rt          j        |¦  «         t	          j        ¦   «         }|t          j        k    s| j         st          j	        |d¬¦  «         t	          j        ¦   «         }|  
                    |ddd¬¦  «         t	          j        ¦   «         }| j         st          j        |j        ¦  «         n+|t          j        k    r|j        rt          j        |¦  «         d|_        d d d ¦  «         n# 1 swxY w Y   t	          j        ¦   «         }	|	|z
  dk    r>t          d|	|z
  d›d	||z
  d›d
||z
  d›d||z
  d›d||z
  d›d|	|z
  d›d�d¬¦  «         d S d S )NF©Úsave_currentT©Údiscard_runtime_snapshotÚpreserve_reset_baserÁ   rX   z[Deepy][Session reset] total=z.3fzs lock=zs save=z	s rotate=zs release/reset runtime=zs finalize=Ús)Úflush)rŸ   r)   rä   rå   rZ   Úperf_counterÚ	turn_lockrî   Úflush_sessionÚstart_new_sessionÚrelease_vramÚensure_mono_session_workspaceÚchat_session_idÚreset_session_filesÚpending_reset_moder®   )
r£   rõ   rØ   rÝ   ÚstartedÚlockedÚsavedÚrotatedÚreleasedÚfinisheds
             rj   Ú_complete_session_resetz'DeepyController._complete_session_resetö   sš  € Ø59Ô5PÐt•]Ô1Ð1ÕVcÔVtˆ
ÝÔ#Ñ%Ô%ˆØÔð 	,ð 	,ÝÔ&Ñ(Ô(ˆFØÔ)ð 5ÝÔ+¨GÑ4Ô4Ð4ÝÔ%Ñ'Ô'ˆEØ�]Ô9Ò9Ð9ÀÔA\Ð9ÝÔ/°ÀeÐLÑLÔLÐLÝÔ'Ñ)Ô)ˆGØ×Ò˜e TÀDÐ^bÐÑcÔcÐcÝÔ(Ñ*Ô*ˆHØÔ.ð ;ÝÔ;¸GÔ<SÑTÔTÐTÐTØ�}Ô=Ò=Ð=À'ÔB\Ð=ÝÔ1°'Ñ:Ô:Ð:Ø)+ˆGÔ&ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,õ Ô$Ñ&Ô&ˆØ�gÑ Ò"Ð"Ýð  j°(¸7Ñ2Bð  jð  jð  jÈvÐV]É~ð  jð  jð  jÐjoÐpvÑjvð  jð  jð  jð  FMð  NSñ  FSð  jð  jð  jð  qyð  zAñ  qAð  jð  jð  jð  RZð  [cñ  Rcð  jð  jð  jð  jð  rvð  wñ  wô  wð  wð  wð  wð #Ð"s   ºDEÅEÅEc                óx   — | j         }|�||u rdS t          |¦  «         t          j        |¦  «         d|_        dS )NFrÁ   T)r˜   r;   r@   Úreset_session_chatÚ	chat_html)r£   rØ   Úactive_sessions      rj   Ú_reset_foreign_active_sessionz-DeepyController._reset_foreign_active_session  sK   € ØÔ7ˆØÐ! ^°wÐ%>Ð%>Ø�5Ý Ñ/Ô/Ð/ÝÔ)¨.Ñ9Ô9Ð9Ø#%ˆÔ Øˆtrl   c                óà  — t          | j        pg ¦  «        D ]Ö}t          |t          ¦  «        sŒt	          |                     dd¦  «        ¦  «                             ¦   «                              ¦   «         dk    rŒdt          |                     dd¦  «        ¦  «        sŒˆt	          |                     dd¦  «        pd¦  «                             ¦   «         }t          |¦  «        dk    r|c S Œ×dS )NÚrolerÁ   ÚuserÚqueuedFÚidr   )
rÕ   Úchat_transcriptr`   ÚdictrU   r�   rÂ   Úlowerr°   r]   )rØ   ÚrecordÚ
message_ids      rj   Ú!_find_next_queued_user_message_idz1DeepyController._find_next_queued_user_message_id  sæ   € å˜7Ô2Ð8°bÑ9Ô9ð 		"ð 		"ˆFÝ˜f¥dÑ+Ô+ð ØÝ�6—:’:˜f bÑ)Ô)Ñ*Ô*×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:¸fÒDÐDØÝ˜Ÿ
š
 8¨UÑ3Ô3Ñ4Ô4ð ØÝ˜VŸZšZ¨¨bÑ1Ô1Ð7°RÑ8Ô8×>Ò>Ñ@Ô@ˆJÝ�:‰Œ Ò"Ð"Ø!Ð!Ð!Ð!ð #àˆrrl   c                óz  — | j         5  t          |j        pd¦  «        dk    r	 d d d ¦  «         dS |                      |¦  «        }t	          |¦  «        dk    r	 d d d ¦  «         dS t          j        ||¦  «        }t          |¦  «        }t          dt          |j        pd¦  «        dz
  ¦  «        |_        t          dt          |j	        pd¦  «        ¦  «        dz   |_	        dt          j
        ||¦  «        d<   t          j        ||d¦  «         t          |||¦  «         |cd d d ¦  «         S # 1 swxY w Y   d S )Nr   rÁ   rX   Fr   ÚInterrupted)r›   r¥   Úqueued_job_countr'  r]   r@   Úget_message_contentr1   ÚmaxÚqueued_cancel_countÚ_find_messageÚset_message_badger7   )r£   rØ   r&  Ú	user_textÚinterruption_notices        rj   Ú_cancel_next_queued_requestz+DeepyController._cancel_next_queued_request#  s»  € ØÔ#ð 	ð 	Ý�7Ô+Ð0¨qÑ1Ô1°QÒ6Ð6Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ×?Ò?ÀÑHÔHˆJÝ�:‰Œ !Ò#Ð#Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	õ 'Ô:¸7ÀJÑOÔOˆIÝ";¸IÑ"FÔ"FÐÝ'*¨1­c°'Ô2JÐ2OÈaÑ.PÔ.PÐSTÑ.TÑ'UÔ'UˆGÔ$Ý*-¨aµ°WÔ5PÐ5UÐTUÑ1VÔ1VÑ*WÔ*WÐZ[Ñ*[ˆGÔ'ØJO�NÔ(¨°*Ñ=Ô=¸hÑGÝÔ,¨W°jÀ-ÑPÔPÐPÝ'¨°Ð<OÑPÔPÐPØð	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   ˆD0±)D0Á'B<D0Ä0D4Ä7D4c           
     ó–
  — t          |¦  «        }	 t          j        t          |pd¦  «        ¦  «        }na# t          t
          f$ rM t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fcY S w xY wt          |t          ¦  «        sJt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS t          | 
                    dd¦  «        pd¦  «                             ¦   «                              ¦   «         }t          | 
                    dd¦  «        pd¦  «                             ¦   «         }t          | 
                    dd¦  «        pd¦  «                             ¦   «         }|dvs,t          |¦  «        dk    s|dk    r]t          |¦  «        dk    rJt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS | j        5  t          j        ||¦  «        }t          j        ||¦  «        }|�rt          | 
                    dd¦  «        ¦  «                             ¦   «         d	k    s9t          | 
                    d
d¦  «        ¦  «                             ¦   «         dk    rVt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fcd d d ¦  «         S |dk    rt          j        |||¦  «        }	�n6|dk    rÕ|j         
                    |¦  «        }
|
�t)          d|
¦  «        sVt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fcd d d ¦  «         S |j        rdnd}t          j        |||¬¦  «        }	|j        r)t          |j        t          ¦  «        rt3          |¦  «         n[|j                             |¦  «         t9          dt;          |j        pd¦  «        dz
  ¦  «        |_        t          j        ||¦  «        }	|j         �|j        s|j        dk    r|j         nd }|�|	�| !                    d|	¦  «         d d d ¦  «         n# 1 swxY w Y   |  "                    d|› d|› dt;          |j        pd¦  «        › �¦  «         |	�|€|	nt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS )NrÁ   Úactionr&  Útext>   ÚeditÚsteerÚremover   r6  r  r  ÚbadgeÚQueuedr7  Ú	assistantú>Steering accepted. Waiting for context compaction to finish...zCSteering accepted. Applying this request at the current boundary...)Ústatus_textrX   rY   zQueued request z user_message_id=ú queued_jobs=)#r5   ÚjsonÚloadsrU   Ú	TypeErrorÚ
ValueErrorr¼   rç   r`   r#  r�   rÂ   r$  r]   r›   r@   Úresolve_message_idr.  Úset_user_message_contentÚqueued_task_handlesrC   Úassistant_compaction_activeÚsteer_queued_messagerï   Úcurrent_turnr:   Úcancelled_queued_message_idsÚaddr,  r¥   r*  Úremove_messageÚcontrol_queueÚpushr¯   )r£   rõ   Úaction_payloadrØ   Úpayloadr4  r&  r5  r%  Ú
chat_eventÚtaskr=  rL  s                rj   Ú_apply_queued_request_actionz,DeepyController._apply_queued_request_action3  sh  € Ý1°%Ñ8Ô8ˆð	FÝ”j¥ ^Ð%9°rÑ!:Ô!:Ñ;Ô;ˆGˆGøÝ�:Ð&ð 	Fð 	Fð 	FÝ”9‘;”;¥¤	¡¤­R¬Y©[¬[½"¼)¹+¼+ÐEÐEÐEÐEð	Føøøå˜'¥4Ñ(Ô(ð 	FÝ”9‘;”;¥¤	¡¤­R¬Y©[¬[½"¼)¹+¼+ÐEÐEÝ�W—[’[ ¨2Ñ.Ô.Ð4°"Ñ5Ô5×;Ò;Ñ=Ô=×CÒCÑEÔEˆÝ˜Ÿš \°2Ñ6Ô6Ð<¸"Ñ=Ô=×CÒCÑEÔEˆ
Ý�7—;’;˜v rÑ*Ô*Ð0¨bÑ1Ô1×7Ò7Ñ9Ô9ˆØÐ4Ð4Ð4½¸J¹¼È1Ò8LÐ8LÐQWÐ[aÒQaÐQaÕfiÐjnÑfoÔfoÐstÒftÐftÝ”9‘;”;¥¤	¡¤­R¬Y©[¬[½"¼)¹+¼+ÐEÐEØÔ#ð 	>ð 	>Ý'Ô:¸7ÀJÑOÔOˆJÝ#Ô1°'¸:ÑFÔFˆFØˆ~¥ V§Z¢Z°¸Ñ%;Ô%;Ñ!<Ô!<×!BÒ!BÑ!DÔ!DÈÒ!NÐ!NÕRUÐV\×V`ÒV`ÐahÐjlÑVmÔVmÑRnÔRn×RtÒRtÑRvÔRvð  {Cò  SCð  SCÝ”y‘{”{¥B¤I¡K¤Kµ´±´½b¼i¹k¼kÐIð		>ð 	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð
 ˜ÒÐÝ+ÔDÀWÈjÐZ^Ñ_Ô_�
‘
Ø˜7Ò"Ð"ØÔ2×6Ò6°zÑBÔB�Ø�<Õ'9¸+ÀtÑ'LÔ'L�<Ýœ9™;œ;­¬	©¬µR´Y±[´[Å"Ä)Á+Ä+ÐMð	>ð 	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð cjô  cFð  QÐ^Ð^ð  LQ�Ý+Ô@ÀÈ*ÐbmÐnÑnÔn�
ØÔ(ð 8­Z¸Ô8LÍdÑ-SÔ-Sð 8Ý.¨wÑ7Ô7Ð7øàÔ4×8Ò8¸ÑDÔDÐDÝ+.¨qµ#°gÔ6NÐ6SÐRSÑ2TÔ2TÐWXÑ2XÑ+YÔ+Y�Ô(Ý+Ô:¸7ÀJÑOÔO�
Ø5<Ô5JÐ5VÐ\cÔ\qÐ5VÐu|ô  vNð  QRò  vRð  vR˜GÔ1Ð1ð  Y]ˆMØÐ(¨ZÐ-CØ×"Ò" =°*Ñ=Ô=Ð=ð+	>ð 	>ð 	>ñ 	>ô 	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>øøøð 	>ð 	>ð 	>ð 	>ð, 	�Šð  A¨&ð  Að  AÀ:ð  Að  AÕ\_Ð`gÔ`xÐ`}Ð|}Ñ\~Ô\~ð  Að  Añ  	Bô  	Bð  	BØ'Ð3¸Ð8MˆzˆzÕSUÔS\ÑS^ÔS^Õ`bÔ`iÑ`kÔ`kÕmoÔmvÑmxÔmxÕz|ô  {Dñ  {Fô  {Fð  Fð  	Fs1   ‘#5 µABÂBÈ-C(R>Ì"BR>ÏC*R>Ò>SÓSr4  c                ó  — t          |j        dd ¦  «        }t          |¦  «        sdS 	 t           |¦   «         pd¦  «                             ¦   «         S # t
          $ r&}|                      d|› d|› �¦  «         Y d }~dS d }~ww xY w)NÚcancel_active_jobrÁ   z,Immediate MCP job cancellation failed after ú: )ÚgetattrÚprime_toolboxÚcallablerU   rÂ   r§   r¯   )r£   rØ   r4  rT  Úexcs        rj   Ú_cancel_active_prime_jobz(DeepyController._cancel_active_prime_jobY  s­   € Ý# GÔ$9Ð;NÐPTÑUÔUÐÝÐ)Ñ*Ô*ð 	Ø�2ð	ÝÐ(Ð(Ñ*Ô*Ð0¨bÑ1Ô1×7Ò7Ñ9Ô9Ð9øÝð 	ð 	ð 	Ø�OŠOÐZÈ6ÐZÐZÐUXÐZÐZÑ[Ô[Ð[Ø�2�2�2�2�2øøøøð	øøøs   ©*A Á
BÁA?Á?Bc                óD   — t          |                      ¦   «         ¦  «        S r¶   )r   rœ   r¨   s    rj   Úis_availablezDeepyController.is_availablec  s   € Ý˜t×2Ò2Ñ4Ô4Ñ5Ô5Ð5rl   c                óÈ   — |                       ¦   «         }t          |                     t          d¦  «        ¦  «        st          S t          |¦  «        st          |¦  «        S dS )Nr   rÁ   )rœ   r   r�   r   Ú_DEEPY_DISABLED_TEXTr   r   ©r£   r¾   s     rj   Úrequirement_error_textz&DeepyController.requirement_error_textf  s]   € Ø×+Ò+Ñ-Ô-ˆÝ& }×'8Ò'8Õ9JÈAÑ'NÔ'NÑOÔOð 	(Ý'Ð'Ý$ ]Ñ3Ô3ð 	:Ý*¨=Ñ9Ô9Ð9Øˆrrl   c                ó  — |                       ¦   «         }t          |                     t          d¦  «        ¦  «        rt	          t          |d¦  «        ¦  «        rt          S t          |                     t          t          ¦  «        ¦  «        S )Nr   rJ   )	rœ   r   r�   r   rE   rF   r   r#   r   r_  s     rj   Úget_vram_modezDeepyController.get_vram_moden  s�   € Ø×+Ò+Ñ-Ô-ˆÝ& }×'8Ò'8Õ9JÈAÑ'NÔ'NÑOÔOð 	*ÕScÕdwð  yFð  HOñ  ePô  ePñ  TQô  TQð 	*Ý)Ð)Ý(¨×):Ò):Õ;NÕPfÑ)gÔ)gÑhÔhÐhrl   c                óv   — t          |                      ¦   «                              t          d¦  «        ¦  «        S )NrÁ   )r   rœ   r�   r   r¨   s    rj   rÔ   zDeepyController.get_deepy_typet  s,   € Ý# D×$7Ò$7Ñ$9Ô$9×$=Ò$=½nÈbÑ$QÔ$QÑRÔRÐRrl   éÿÿÿÿc                óÔ   — | j                              |¬¦  «         | j                              ¦   «         }| j                              ¦   «         }|�|€t	          j        d¦  «        ‚||fS )N©Úoverride_profilez0Prompt enhancer vision runtime is not available.)r—   rv   ry   rz   r¼   ÚError)r£   rg  Úimage_caption_modelÚimage_caption_processors       rj   Ú_ensure_vision_loadedz%DeepyController._ensure_vision_loadedw  sm   € ØŒ
×0Ò0ÐBRÐ0ÑSÔSÐSØ"œj×@Ò@ÑBÔBÐØ"&¤*×"HÒ"HÑ"JÔ"JÐØÐ&Ð*AÐ*IÝ”(ÐMÑNÔNÐNØ"Ð$;Ð;Ð;rl   c                óh   — | j                              ¦   «         }|�|                     ¦   «          d S d S r¶   )r—   r{   Ú
unload_all)r£   Úenhancer_offloadobjs     rj   Ú_unload_weightszDeepyController._unload_weights  s<   € Ø"œj×@Ò@ÑBÔBÐØÐ*Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð +Ð*rl   NÚquestionÚframe_noú
int | NoneÚmax_image_edgec                ó"  ‡— |                       ¦   «         }|                     dd¦  «        t          vrt          d¦  «        ‚|                      ¦   «         t
          k    }t          t          ¦   «         t          ˆfd„ˆfd„d„ ˆfd„| j	        j
        | j	        j        | j        | j        | j	        j        ¬¦	  «	        d	d
„ |                      ¦   «         d|                      ¦   «         ¬¦  «        }t           5  	 |                     ||||¦  «        |j        rk|                      ¦   «         }		 |s
 |	¦   «          t)          ‰t*          |t,          |r|	nd	¬¦  «         n'# t)          ‰t*          |t,          |r|	nd	¬¦  «         w xY wcd	d	d	¦  «         S # |j        rk|                      ¦   «         }		 |s
 |	¦   «          t)          ‰t*          |t,          |r|	nd	¬¦  «         w # t)          ‰t*          |t,          |r|	nd	¬¦  «         w xY ww xY w# 1 swxY w Y   d	S )a   The prompt enhancer's Qwen VL model answers an external agent's visual question directly from the images, as Deepy's inspection does.
        It borrows the GPU like any WanGP process: a running generation pauses at its next step; Deepy's VRAM mode decides whether the model stays loaded.Úenhancer_enabledr   zyWanGP's Visual Inspector uses the prompt enhancer: set it to a Qwen3.5VL or Qwen3.8VL mode in Configuration > Extensions.c                 ó:   •— t          ‰ t          t          ¦  «        S r¶   )rG   ÚAGENT_VISION_PROCESSÚAGENT_VISION_NAME©rõ   s   €rj   ú<lambda>z5DeepyController.answer_visual_query.<locals>.<lambda>Œ  s   ø€ Õ 6°uÕ>RÕTeÑ fÔ f€ rl   c                 ó<   •— t          ‰t          t          ¬¦  «        S )N)Úprocess_name)rH   rw  rx  )Ú_kwargsrõ   s    €rj   rz  z5DeepyController.answer_visual_query.<locals>.<lambda>�  s   ø€ Õ*@ÀÕH\Õk|Ð*}Ñ*}Ô*}€ rl   c                 ó   — d S r¶   r‹   )Ú_argsr}  s     rj   rz  z5DeepyController.answer_visual_query.<locals>.<lambda>Ž  s   € ¸D€ rl   c                 ó.   •— t          ‰ t          ¦  «        S r¶   )rI   rw  ry  s   €rj   rz  z5DeepyController.answer_visual_query.<locals>.<lambda>�  s   ø€ Õ'>¸uÕFZÑ'[Ô'[€ rl   ©	r|   r}   r~   r   Úensure_loadedÚunload_runtimeÚunload_weightsÚensure_vision_loadedÚget_offload_managerNc                 ó   — d S r¶   r‹   )r  s    rj   rz  z5DeepyController.answer_visual_query.<locals>.<lambda>•  s   €  € rl   F)r²   Úthinking_enabledÚ	vram_mode)Úkeep_residentr|  Úrelease_vram_callback)rœ   r�   r   rB  rb  r   r,   r.   r-   r—   rv   rx   ro  rk  r{   r³   Ú_AGENT_VISION_LOCKÚ_run_visual_queryÚ_gpu_acquiredÚ_build_preload_release_callbackrH   rw  rx  )
r£   rõ   Úmedia_recordrp  rq  rs  r¾   Úkeep_loadedÚengineÚrelease_callbacks
    `        rj   Úanswer_visual_queryz#DeepyController.answer_visual_query„  s”  ø€ ð ×+Ò+Ñ-Ô-ˆØ×ÒÐ/°Ñ3Ô3Õ;RÐRÐRÝð  Yñ  Zô  Zð  ZØ×(Ò(Ñ*Ô*Õ.DÒDˆÝ Õ!6Ñ!8Ô!8Õ:OØfÐfÐfÐfØ}Ð}Ð}Ð}Ø"@Ð"@Ø[Ð[Ð[Ð[Øœ*ÔBØœ:ÔDØÔ/Ø!%Ô!;Ø $¤
Ô Bð
;
ñ 
;
ô 
;
ð Ð$Ð$°D×4LÒ4LÑ4NÔ4NÐafÐrv÷  sEò  sEñ  sGô  sGð
Hñ 
Hô 
Hˆõ  ð 
	Hð 
	Hð	HØ×/Ò/°¸hÈÐR`ÑaÔaàÔ'ð HØ'+×'KÒ'KÑ'MÔ'MÐ$ðHØ*ð /Ø,Ð,Ñ.Ô.Ð.å.¨uÕ6JÐZeõ  uFð  r}ð  ^Gð  ^nð  ^nð  CGð  Hñ  Hô  Hð  Hð  HøÕ.¨uÕ6JÐZeõ  uFð  r}ð  ^Gð  ^nð  ^nð  CGð  Hñ  Hô  Hð  Hð  Høøøð
	Hð 
	Hð 
	Hð 
	Hñ 
	Hô 
	Hð 
	Hð 
	Høð Ô'ð HØ'+×'KÒ'KÑ'MÔ'MÐ$ðHØ*ð /Ø,Ð,Ñ.Ô.Ð.å.¨uÕ6JÐZeõ  uFð  r}ð  ^Gð  ^nð  ^nð  CGð  Hñ  Hô  Hð  Hð  HøÕ.¨uÕ6JÐZeõ  uFð  r}ð  ^Gð  ^nð  ^nð  CGð  Hñ  Hô  Hð  Hð  HøøøðHøøøð	
	Hð 
	Hð 
	Hð 
	Høøøð 
	Hð 
	Hð 
	Hð 
	Hð 
	Hð 
	HsZ   Ã5HÃ7FÄHÄ*EÄ6#HÅ$E=Å=HÆHÆ*GÆ6#HÇ$G=	Ç=HÈHÈHÈHrw   c                ó   ‡ — dˆ fd„}|S )NrV   rŒ   c                 ó–   •— 	 ‰ j                              ¦   «          ‰                      ¦   «          d S # ‰                      ¦   «          w xY wr¶   )r—   rx   ro  r¨   s   €rj   Ú_release_preloaded_runtimezSDeepyController._build_preload_release_callback.<locals>._release_preloaded_runtime£  sL   ø€ ð'Ø”
×9Ò9Ñ;Ô;Ð;à×$Ò$Ñ&Ô&Ð&Ð&Ð&ø�×$Ò$Ñ&Ô&Ð&Ð&øøøs	   ƒ2 ²A©rV   rŒ   r‹   )r£   r—  s   ` rj   r�  z/DeepyController._build_preload_release_callback¢  s)   ø€ ð	'ð 	'ð 	'ð 	'ð 	'ð 	'ð *Ð)rl   c                ó(  — t          |¦  «        }|rš| j        5  t          |j        ¦  «        }|s|j        dk    s|j        �#t          |¦  «        |_        t          |¦  «         d d d ¦  «         n# 1 swxY w Y   |r.|                      d¦  «         |j	         
                    ¦   «          |j        }d |_        t          |¦  «        |_        | j                             |¦  «         	 t          |¦  «        r
 |¦   «          |r&d |_        t!          |j        ¦  «        dk    rd|_        d|_        n4# |r&d |_        t!          |j        ¦  «        dk    rd|_        d|_        w xY w|rª|j        r1|j        |                      ¦   «         k    rt-          j        |¦  «         |j        }|r&t          |¦  «        rt           |¦   «         ¦  «        nd}	|	st3          |¦  «         d|_        d|_        d |_        |j	                             ¦   «          d S d S )Nr   z@Waiting for the active Deepy worker before clearing its runtime.rÁ   F)r5   r›   r°   rï   r*  rL  Ú#discard_runtime_snapshot_on_releaser;   r¯   Úworker_idle_eventÚwaitr‹  r—   r   rX  Úruntime_snapshotr]   Úrendered_token_idsÚpending_replay_reasonrî   Ústorage_deepy_typerÔ   r)   r  Úreset_to_base_callbackr4   Úinterrupt_requestedÚdrop_state_requestedÚset)
r£   rõ   Úclear_session_stater  r  rØ   rï   r“  Úreset_to_baseÚpreserved_reset_bases
             rj   r  zDeepyController.release_vram«  s•  € Ý1°%Ñ8Ô8ˆØð 	1ØÔ'ð 5ð 5Ý $ WÔ%:Ñ ;Ô ;�Ø ð 5 GÔ$<¸qÒ$@Ð$@ÀGÔDYÐDeÝBFÐG_ÑB`ÔB`�GÔ?Ý+¨GÑ4Ô4Ð4ð	5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð
 ð 1Ø—’Ð bÑcÔcÐcØÔ)×.Ò.Ñ0Ô0Ð0Ø"Ô8ÐØ(,ˆÔ%Ý6:Ð;SÑ6TÔ6TˆÔ3ØŒ
×%Ò% eÑ,Ô,Ð,ð	@ÝÐ(Ñ)Ô)ð #Ø Ð Ñ"Ô"Ð"à'ð 7Ø+/�Ô(Ý�wÔ1Ñ2Ô2°aÒ7Ð7Ø46�GÔ1Ø:?ˆGÔ7Ð7øð	 (ð 7Ø+/�Ô(Ý�wÔ1Ñ2Ô2°aÒ7Ð7Ø46�GÔ1Ø:?ˆGÔ7Ð?Ð?Ð?Ð?Øð 
	,ØÔ)ð 9¨gÔ.HÈD×L_ÒL_ÑLaÔLaÒ.aÐ.aÝÔ/°Ñ8Ô8Ð8Ø#Ô:ˆMØ<OÐ#vÕT\Ð]jÑTkÔTkÐ#v¥4¨¨©¬Ñ#8Ô#8Ð#8ÐqvÐ Ø'ð 1Ý'¨Ñ0Ô0Ð0Ø*/ˆGÔ'Ø+0ˆGÔ(Ø$(ˆGÔ!ØÔ%×)Ò)Ñ+Ô+Ð+Ð+Ð+ð
	,ð 
	,s   ™AA1Á1A5Á8A5Ã)D2 Ä21E#c                ó¦  — |                       ¦   «          | j                             |¦  «         | j                             |¦  «         d}d}	 | j                             |¬¦  «        \  }}ddlm} |                     |¦  «        rØt          |  	                    ¦   «          
                    t          t          ¦  «        ¦  «        |_        |                     |d¬¦  «        }|                     ddd	¬
¦  «         |                     ¦   «          t#          |dd ¦  «        }	|	€t%          d¦  «        ‚|	j                             ¦   «          |                     ¦   «          d}d}d|dœ| j                             |||r|                      ¦   «         nd d¬¦  «         S # | j                             |||r|                      ¦   «         nd d¬¦  «         w xY w)NFrf  r   )Úqwen35_textr;  )Ú
usage_modeé@   rX   g      ð?)Ú
prompt_lenÚ
max_tokensÚ	cfg_scaleÚ_llmz-Assistant LM engine runtime is not available.TÚready)ÚstatusÚwarmed_vllm©rŠ  r‹  Úforce_release_on_acquire)r³   r—   r   r|   rv   r�   r©  Ú_use_vllm_prompt_enhancerr   rœ   r�   r
   r	   Ú#_prompt_enhancer_min_model_len_hintÚ_get_or_create_vllm_engineÚreserve_runtimeÚ_ensure_llmrV  ÚRuntimeErrorÚmodel_runnerÚensure_runtime_readyÚrelease_runtime_allocationsr}   r�  )
r£   rõ   rg  rŠ  r²  ÚmodelÚ
_tokenizerr©  r’  Úllms
             rj   Úpreload_cli_runtimez#DeepyController.preload_cli_runtimeÏ  s  € Ø× Ò Ñ"Ô"Ð"ØŒ
×%Ò% eÑ,Ô,Ð,ØŒ
×Ò˜uÑ%Ô%Ð%ØˆØˆð	Ø $¤
× HÒ HÐZjÐ HÑ kÔ kÑˆE�:Ø:Ð:Ð:Ð:Ð:Ð:à×4Ò4°UÑ;Ô;ð 
#Ý<ZÐ[_×[nÒ[nÑ[pÔ[p×[tÒ[tõ  vNõ  Plñ  \mô  \mñ  =nô  =n�Ô9Ø$×?Ò?ÀÐR]Ð?Ñ^Ô^�Ø×&Ò&°"ÀÈcÐ&ÑRÔRÐRØ×"Ò"Ñ$Ô$Ð$Ý˜f f¨dÑ3Ô3�Ø�;Ý&Ð'VÑWÔWÐWØÔ ×5Ò5Ñ7Ô7Ð7Ø×2Ò2Ñ4Ô4Ð4Ø"�Ø ˆMØ%°kÐBÐBàŒJ×"Ò"ØØ+ØP]Ð&g d×&JÒ&JÑ&LÔ&LÐ&LÐcgØ)-ð	 #ñ ô ð ð øˆDŒJ×"Ò"ØØ+ØP]Ð&g d×&JÒ&JÑ&LÔ&LÐ&LÐcgØ)-ð	 #ñ ô ð ð øøøs   ÁDF Æ6G)Úauto_cancel_queue_tasksÚ!separate_requests_with_empty_lineÚuse_template_propertiesÚmodel_speedÚ
model_sizeÚwidthÚheightÚ
num_framesÚaudio_durationÚseedrê   c               ó‚   — t          |¦  «        }t          |f||||||||	|
|dœ
|¤Ž}|r|                      |¦  «         |S )z\variants: the template of each task, given as its ui_key (ui_settings.TEMPLATE_TOOL_UI_KEY).)
rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rË  )r5   r>   r¿   )r£   rõ   rÂ  rÃ  rÄ  rÅ  rÆ  rÇ  rÈ  rÉ  rÊ  rË  rê   ÚvariantsrØ   r·   s                   rj   Úupdate_tool_ui_settingsz'DeepyController.update_tool_ui_settingsî  sw   € å1°%Ñ8Ô8ˆÝ3Øð
à$;Ø.OØ$;Ø#Ø!ØØØ!Ø)Øð
ð 
ð ð
ð 
ˆ
ð ð 	7Ø×*Ò*¨:Ñ6Ô6Ð6ØÐrl   r5  ú	list[str]c                ó¬  — t          | pd¦  «                             dd¦  «                             dd¦  «                             ¦   «         }t          |¦  «        dk    rg S g }g }|                     d¦  «        D ]“}|                     ¦   «         }|rt          j        d|¦  «        r?|r<|                     d                     |¦  «                             ¦   «         ¦  «         g }Œl|                     | 	                    ¦   «         ¦  «         Œ”|r:|                     d                     |¦  «                             ¦   «         ¦  «         d„ |D ¦   «         S )NrÁ   z
ú
úr   z	[-=_]{3,}c                ó8   — g | ]}t          |¦  «        d k    ¯|‘ŒS )r   )r]   )rÎ   Úrequests     rj   rÐ   z9DeepyController._split_request_blocks.<locals>.<listcomp>  s(   € ÐDÐDÐD˜Gµ3°w±<´<À!Ò3CÐ3C�Ð3CÐ3CÐ3Crl   )
rU   ÚreplacerÂ   r]   ÚsplitÚreÚ	fullmatchrc   ÚjoinÚrstrip)r5  r·   ÚrequestsÚcurrent_linesÚraw_lineÚstripped_lines         rj   Ú_split_request_blocksz%DeepyController._split_request_blocks  sE  € å˜˜ ‘_”_×,Ò,¨V°TÑ:Ô:×BÒBÀ4ÈÑNÔN×TÒTÑVÔVˆ
Ýˆz‰?Œ?˜aÒÐØˆIØˆØˆØ"×(Ò(¨Ñ.Ô.ð 	4ð 	4ˆHØ$ŸNšNÑ,Ô,ˆMØ ð ¥B¤L°¸}Ñ$MÔ$Mð Ø ð 'Ø—O’O D§I¢I¨mÑ$<Ô$<×$BÒ$BÑ$DÔ$DÑEÔEÐEØ$&�MØØ× Ò  §¢Ñ!2Ô!2Ñ3Ô3Ð3Ð3Øð 	>Ø�OŠO˜DŸIšI mÑ4Ô4×:Ò:Ñ<Ô<Ñ=Ô=Ð=ØDÐD xÐDÑDÔDÐDrl   Úask_requestr   c                ó”  — t          |pd¦  «                             ¦   «         }t          |¦  «        dk    rg S t          |j        t
          ¦  «        r.t          |j        ¦  «        dk    rt          j        di |j        ¤Žn%t          j        |  	                    ¦   «         ¦  «        }|d         s|gS |  
                    |¦  «        p|gS )NrÁ   r   rÃ  r‹   )rU   rÂ   r]   r`   Útool_ui_settingsr#  r¹   Ú$normalize_assistant_tool_ui_settingsÚ(get_persisted_assistant_tool_ui_settingsrœ   rß  )r£   rØ   rà  Únormalized_requestrâ  s        rj   Ú_expand_assistant_requestsz*DeepyController._expand_assistant_requests  s0  € Ý  Ð!2°Ñ3Ô3×9Ò9Ñ;Ô;ÐÝÐ!Ñ"Ô" aÒ'Ð'ØˆIÝq{ð  }Dô  }Uõ  W[ñ  r\ô  r\ð  Yõ  adð  elô  e}ñ  a~ô  a~ð  ABò  aBð  aBÕ,ÔQÐmÐmÐT[ÔTlÐmÐmÐmõ  HYô  HBð  CG÷  CVò  CVñ  CXô  CXñ  HYô  HYÐØÐ CÔDð 	(Ø&Ð'Ð'Ø×)Ò)Ð*<Ñ=Ô=ÐUÐBTÐAUÐUrl   c           	     óZ  — d| _         | j        s|j        s	d |_        d S t	          |                      ¦   «                              t          t          ¦  «        ¦  «        }|j        r|j	        n|}t          j        |||                      ¦   «         ||                      |¦  «        ¦  «         d S ©NT)r¡   rŸ   rî   Úsafe_checkpoint_callbackr   rœ   r�   r   r   rÞ   r)   Úensure_sessionrÔ   rÚ   )r£   rØ   rà  Údefault_gallery_modeÚgallery_modes        rj   Ú_prepare_session_request_lockedz/DeepyController._prepare_session_request_locked  sÛ   € Ø&*ˆÔ#àÔ*ð 	°7Ô3Mð 	Ø/3ˆGÔ,ØˆFÝIÈ$×J]ÒJ]ÑJ_ÔJ_×JcÒJcõ  eIõ  Ksñ  Ktô  Ktñ   uô   uÐØ5<Ô5OÐi�wÔ1Ð1ÐUiˆÝÔ$ W¨k¸4×;NÒ;NÑ;PÔ;PÐR^Ð`d×`yÒ`yð  {Bñ  aCô  aCñ  	Dô  	Dð  	Dð  	Dð  	Drl   c                ó^  — t          |¦  «        }| j        5  |                      ||¦  «         t          j        ||d¬¦  «        \  }}t          |||¦  «         | j        rt          j        |¦  «         d d d ¦  «         n# 1 swxY w Y   | j	        �| j	         
                    ¦   «          ||fS )NF)r   )r5   r›   rí  r@   Úadd_user_messager0   rŸ   r)   rð   r    Úensure_session_workspace)r£   rõ   rà  rØ   Úuser_message_idÚ
user_events         rj   Úbegin_direct_requestz$DeepyController.begin_direct_request)  sú   € Ý1°%Ñ8Ô8ˆØÔ#ð 	9ð 	9Ø×0Ò0°¸+ÑFÔFÐFÝ*8Ô*IÈ'ÐS^ÐglÐ*mÑ*mÔ*mÑ'ˆO˜ZÝ  ¨/¸;ÑGÔGÐGØÔ*ð 9ÝÔ/°Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ÔÐ*ØÔ×8Ò8Ñ:Ô:Ð:Ø 
Ð*Ð*s   —AB Â BÂBrÁ   ÚYou)Úclient_submission_idÚassistant_badgeÚreplay_actionÚmediaÚauthorÚqueued_epochr   rõ  rö  r÷  údict[str, Any] | Nonerø  úlist[dict[str, str]] | Nonerù  c               óð  ‡ ‡‡‡‡‡‡‡‡‡‡‡‡— ‰j         Št          |pd¦  «                             ¦   «         }|	€d nt          |	¦  «        Šˆˆ fd„Šdˆˆˆ ˆfd„	Š‰ j        5  ‰xj        dz  c_        ‰€U‰                      ‰‰¦  «         t          j        ‰‰‰‰|
|¬¦  «        \  Š}|rt          j	        ‰‰¦  «        }||d<   d|d<   nt          ‰d         ¦  «        Š‰  
                    d	‰› d
t          ‰¦  «        › dt          ‰j        pd¦  «        › �¦  «         t          j        ‰¦  «         d d d ¦  «         n# 1 swxY w Y   ˆˆˆˆˆˆˆˆ ˆˆˆˆfd„}t          d|¦  «        }‰r
|‰j        ‰<   ‰|fS )NrÁ   c                óP   •— ‰r ‰j         �‰                      ‰| |¦  «         d S d S d S r¶   )r¢   )ÚphaseÚinforõ  r£   s     €€rj   Únotifyz8DeepyController._queue_assistant_request.<locals>.notify:  sE   ø€ Ø#ð I¨Ô(=Ð(IØ×%Ò%Ð&:¸EÀ4ÑHÔHÐHÐHÐHðIð IÐ(IÐ(Irl   c                óæ  •— ‰‰j         k    r| dv rd S t          �rJ‰                     ¦   «         dk    �r1| dk    �r*t          |t          ¦  «        �r	 t          j        |¦  «                             di ¦  «        }t	          |                     dd¦  «        ¦  «        }|dv r³‰                     d|› d	|                     d
d¦  «        › d|                     dd¦  «        › d|                     dd¦  «        › d|                     d|                     di ¦  «                             dd¦  «        ¦  «        › d|                     dd¦  «        › �¦  «         n# t          $ r Y nw xY w ‰| |¦  «         d S )N>   ÚerrorrY   Úrefresh_galleryÚload_queue_triggerr«   rY   ÚeventÚtyperÁ   >	   ÚsyncÚresetÚremove_blockÚupsert_blockÚfinalize_blockrK  Úupsert_messageÚappend_block_textÚreplace_block_textzChat event type=z
 sequence=Úsequenceú-z sequence_start=Úsequence_startz
 revision=Úrevisionz	 message=r&  r©   r!  z block=Úblock_id)
Ú
chat_epochÚ_DEEPY_STREAM_TRACE_ENABLEDrr   r`   rU   r?  r@  r�   r¯   r§   )ÚcmdÚdatar  Ú
event_typerú  Úraw_send_cmdr£   rØ   s       €€€€rj   Úsend_cmdz:DeepyController._queue_assistant_request.<locals>.send_cmd>  s€  ø€ Ø˜wÔ1Ò1Ð1°cÐ=~Ð6~Ð6~Ø�Ý*ñ ¨t×/EÒ/EÑ/GÔ/GÈ1Ò/LÑ/LÐQTÐXeÒQeÑQeÕjtÐuyÕ{~ÑjÔjÑQeðÝ œJ tÑ,Ô,×0Ò0°¸"Ñ=Ô=�EÝ!$ U§Y¢Y¨v°rÑ%:Ô%:Ñ!;Ô!;�JØ!ð  &xð  xð  xØŸšð  )t¸:ð  )tð  )tÐQV×QZÒQZÐ[eÐgjÑQkÔQkð  )tð  )tð  ~C÷  ~Gò  ~Gð  HXð  Z]ñ  ~^ô  ~^ð  )tð  )tð  jo÷  jsò  jsð  t~ð  @Cñ  jDô  jDð  )tð  )tð  OT÷  OXò  OXð  Yeð  gl÷  gpò  gpð  qzð  |~ñ  gô  g÷  gCò  gCð  DHð  JMñ  gNô  gNñ  OOô  OOð  )tð  )tð  X]÷  Xaò  Xað  blð  nqñ  Xrô  Xrð  )tð  )tñ  uô  uð  uøøÝ ð ð ð Ø�DðøøøàˆL˜˜dÑ#Ô#Ð#Ð#Ð#s   ÁDE Å
E"Å!E"rX   ©r   rõ  rø  rù  rö  r9  rñ  z!Request enqueued user_message_id=z queued=r>  r   c                 ó  •— t          d¬¦  «        5  d} ‰€‰nt          ‰d         ¦  «        }‰€dnt          ‰d         ¦  «        }‰j        5  ‰‰!j        k    }| o‰#‰!j        v }| o|pt          ‰!j        pd¦  «        dk    }|r‰!j        ‰u rd ‰!_        �n|r›‰!j         	                    ‰#d ¦  «         |r‰!j         
                    ‰#¦  «         nBt          dt          ‰!j        pd¦  «        dz
  ¦  «        ‰!_        t          j        ‰!‰#d	¦  «         t          j        ‰!¦  «        }‰!j        dk    }�nz‰!j         	                    ‰#d ¦  «         ‰€at          j        ‰!‰#¦  «        }t          |                     dd¦  «        pd¦  «                             ¦   «         }t          j        ‰!‰#¦  «        }t          d‰!j        dz
  ¦  «        ‰!_        d‰!_        t+          ‰!¦  «         t-          ‰!¦  «         ‰‰!_        d‰!_        ‰!j                             ¦   «          ‰!‰_        ‰€t7          ‰!‰#||¬
¦  «         nt9          ‰!‰¦  «         d} d }	‰r0‰€.dt          j        ‰!‰#¦  «        d<   t          j        ‰!‰#d ¦  «         ‰s‰�,d|rdnd|rdnddœ}
‰�ddddœ}
t          j        ‰!|
¬¦  «        }	d d d ¦  «         n# 1 swxY w Y   |rH‰                     d‰#› d‰› d‰!j        › �¦  «          ‰d¦  «          ‰dd ¦  «         	 d d d ¦  «         d S |rÀ‰                     d‰#› �¦  «          ‰d¦  «          ‰d|¦  «         |r" ‰dt          j        dd‰!¬¦  «        ¦  «         n_‰                     ¦   «         t@          k    r‰ !                    ‰"¦  «          ‰dt          j        d d‰!¬¦  «        ¦  «          ‰dd ¦  «         	 d d d ¦  «         d S ‰                     d‰#› dt          ‰!j        pd¦  «        › �¦  «          ‰d‰#¬¦  «         |	� ‰ d|	¦  «         ‰ "                    ‰"‰ ‰!¬ ¦  «        }	 ‰                     d!‰#› �¦  «         ‰€)‰j#         $                    ‰"dd d"|gd d dddd d#‰ |¦  «         n0‰d$         rd"nd%}‰ %                    ‰"d ||g‰d&         ‰ |‰¬'¦  «         nß# tL          $ rÒ}tO          tQ          |d(d¦  «        ¦  «        }|stS          j*        ¦   «          t          j+        ‰!¦  «        }|rt          j        ‰!||¦  «         tY          ‰!|¦  «         t          j-        ‰!||rt          |¦  «        nd)|› �¦  «        }|� ‰ d|¦  «          ‰ dt          j        d d‰!¬¦  «        ¦  «         Y d }~nd }~ww xY wt]          j/        ‰!¦  «         ‰j        5  ‰j        ‰!u rd ‰_        d‰!_        t          ‰!j0        pd¦  «        }‰‰!j        k    }| o| o
‰!j        dk    }|s‰!j        ‰u rd ‰!_        t+          ‰!¦  «         |otc          d*„ ‰!j2        D ¦   «         ¦  «        }|sd n	dd|rdnddœ}|rt          j        ‰!|¬¦  «        nd }tO          ‰!j        ¦  «        }d‰!_        d d d ¦  «         n# 1 swxY w Y   |r6‰ 3                    ‰"‰!|¦  «          ‰dt          j4        ‰!¦  «        ¦  «         nS|r!| r ‰dt          j4        ‰!¦  «        ¦  «         n0|r ‰d|¦  «         n! ‰dt          j        d d‰!¬¦  «        ¦  «         ‰                     d+‰#› d,tO          |¦  «        › d-tO          |¦  «        › dt          ‰!j        pd¦  «        › �¦  «         |s˜‰                     ¦   «         t@          k    r‰ !                    ‰"¦  «         ‰ 5                    ¦   «         s‰                     d.‰#› d/�¦  «          ‰dd ¦  «         ‰                     d0‰#› d1‰ 6                    ¦   «         › �¦  «         ‰!j         7                    ¦   «           ‰d2‰#|p|ptO          |¦  «        ¬3¦  «         �n±# t]          j/        ‰!¦  «         ‰j        5  ‰j        ‰!u rd ‰_        d‰!_        t          ‰!j0        pd¦  «        }‰‰!j        k    }| o| o
‰!j        dk    }|s‰!j        ‰u rd ‰!_        t+          ‰!¦  «         |otc          d*„ ‰!j2        D ¦   «         ¦  «        }|sd n	dd|rdnddœ}|rt          j        ‰!|¬¦  «        nd }tO          ‰!j        ¦  «        }d‰!_        d d d ¦  «         n# 1 swxY w Y   |r6‰ 3                    ‰"‰!|¦  «          ‰dt          j4        ‰!¦  «        ¦  «         nS|r!| r ‰dt          j4        ‰!¦  «        ¦  «         n0|r ‰d|¦  «         n! ‰dt          j        d d‰!¬¦  «        ¦  «         ‰                     d+‰#› d,tO          |¦  «        › d-tO          |¦  «        › dt          ‰!j        pd¦  «        › �¦  «         |s˜‰                     ¦   «         t@          k    r‰ !                    ‰"¦  «         ‰ 5                    ¦   «         s‰                     d.‰#› d/�¦  «          ‰dd ¦  «         ‰                     d0‰#› d1‰ 6                    ¦   «         › �¦  «         ‰!j         7                    ¦   «           ‰d2‰#|p|ptO          |¦  «        ¬3¦  «         w xY w	 d d d ¦  «         d S # 1 swxY w Y   d S )4NTr¬   Fr0  rÁ   rö  r   rX   r)  )rö  r   Úloadingz<Steering accepted. Deepy is applying the new instructions...úStarting Deepy...©ÚvisibleÚkindr5  z#Replaying the interrupted action...©r±  z-Worker skipped stale request user_message_id=z queued_epoch=z chat_epoch=Ú	cancelledÚexitz0Worker cancelled queued request user_message_id=rY   ú)Queued behind the current assistant task.©r"  rØ   )r!  rØ   z Worker starting user_message_id=r>  r  )rñ  ©rØ   z2Prompt enhancer dispatch starting user_message_id=ÚAKg      @rˆ  ÚArË  )r  Útoolsr÷  Úuser_action_requiredzAssistant crashed: c              3  ó@  K  — | ]™}t          |                     d d¦  «        ¦  «                             ¦   «         dk    o[t          |                     dd¦  «        ¦  «        o8t          |                     dd¦  «        ¦  «                             ¦   «         dk    V — ŒšdS )r  rÁ   r  r   Frö  ÚSteeredN)rU   r�   rÂ   r°   )rÎ   r%  s     rj   ú	<genexpr>zVDeepyController._queue_assistant_request.<locals>.queue_worker_func.<locals>.<genexpr>¿  s-  è è € ð  A|ð  A|ð  Z`ÅÀVÇZÂZÐPVÐXZÑE[ÔE[ÑA\ÔA\×AbÒAbÑAdÔAdÐhnÒAnð  BUÕswÐx~÷  yCò  yCð  DLð  NSñ  yTô  yTñ  tUô  tUð  BUõ  Z]ð  ^d÷  ^hò  ^hð  izð  |~ñ  ^ô  ^ñ  Z@ô  Z@÷  ZFò  ZFñ  ZHô  ZHð  LUò  ZUð  A|ð  A|ð  A|ð  A|ð  A|ð  A|rl   z Worker finished user_message_id=z stale=z has_more_work=zITimed out waiting for the final Deepy UI publication for user_message_id=rË   z0Terminal publication queued for user_message_id=rU  r  )rñ  Úinterrupted)8r*   rU   r›   r  rI  r¥   r-  rL  rE  rb   Údiscardr,  r@   r/  Úbuild_sync_eventr*  r.  r�   rÂ   r+  r¢  r2   r3   rï   r›  Úclearr˜   r0   r/   r¯   Úbuild_status_eventrb  r   r  Úcreate_toolsr—   r…   Úrun_assistant_prompt_turnr§   r°   rV  Ú	tracebackÚ	print_excÚcreate_assistant_turnr6   Úset_assistant_contentr)   rð   r  Úanyr"  r  Úbuild_reset_eventÚwait_for_chat_publicationÚmetricsr¤  )$Ústarted_turnÚactive_requestÚruntime_assistant_badgeÚstale_requestÚtargeted_cancelledÚcancelled_requestÚcancelled_syncÚcancelled_has_more_workÚuser_recordÚstarting_syncÚstarting_statusÚmy_toolsÚmodesÚer,  Úerror_turn_idÚerror_eventr  Ú
stale_turnÚhas_more_workÚpending_steeringÚfinal_statusÚ
final_syncr0  rà  r  re   r   rú  r  Úreplayr£   r  rØ   rõ   rñ  s$                           €€€€€€€€€€€€rj   Úqueue_worker_funczCDeepyController._queue_assistant_request.<locals>.queue_worker_funcY  s  ø€ Ý °Ð6Ñ6Ô6ð }Kð }KØ$�Ø06°  ÅCÈÈ{ÔH[ÑD\ÔD\�Ø06°¨"¨"ÅCÈÐO`ÔHaÑDbÔDbÐ'ØÔ+ð +mð +mØ$0°GÔ4FÒ$F�MØ-:Ð):Ð)v¸ÐRYÔRvÐ?vÐ&Ø,9Ð(9Ð(Ð?QÐ?~ÕUXÐY`ÔYtÐYyÐxyÑUzÔUzÐ}~ÒU~Ð%Ø$ð 'mØ"Ô0°LÐ@Ð@Ø48˜GÔ1ùØ*ð $mØÔ3×7Ò7¸ÈÑNÔNÐNØ-ð fØ#Ô@×HÒHÈÑYÔYÐYÐYå:=¸aÅÀWÔE`ÐEeÐdeÑAfÔAfÐijÑAjÑ:kÔ:k˜GÔ7Ý*Ô<¸WÀoÐWdÑeÔeÐeÝ)7Ô)HÈÑ)QÔ)Q˜Ø29Ô2JÈQÒ2NÐ/Ñ/àÔ3×7Ò7¸ÈÑNÔNÐNØ!˜>Ý*8Ô*FÀwÐP_Ñ*`Ô*`˜KÝ69¸+¿/º/ÐJ[Ð]_Ñ:`Ô:`Ð:fÐdfÑ6gÔ6g×6mÒ6mÑ6oÔ6oÐ3Ý-;Ô-OÐPWÐYhÑ-iÔ-i˜NÝ36°q¸'Ô:RÐUVÑ:VÑ3WÔ3W˜Ô0Ø6;˜Ô3Ý-¨gÑ6Ô6Ð6Ý0°Ñ9Ô9Ð9Ø0<˜Ô-Ø04˜Ô-ØÔ1×7Ò7Ñ9Ô9Ð9Ø9@˜Ô6Ø!˜>Ý0°¸/È>ð  lCð  Dñ  Dô  Dð  Dð  Då7¸ÀÑHÔHÐHØ'+˜Ø(,˜Ø!ð ] f nØ_d�NÔ8¸À/ÑRÔRÐS[Ñ\Ý*Ô<¸WÀoÐW[Ñ\Ô\Ð\Ø!ð m VÐ%7Ø:>ÐTkÐHzÈÈÐqzð  G^ð  Ewð  ECð  ECð  dwð  /xð  /x˜OØ%Ð1Ø>BÈIð  `Eð  3Fð  3F Ý,:Ô,KÈGÐ\kÐ,lÑ,lÔ,l˜MðW+mð +mð +mñ +mô +mð +mð +mð +mð +mð +mð +møøøð +mð +mð +mð +mðX !ð Ø—O’Oð  %bÐTcð  %bð  %bÐsð  %bð  %bð  NUô  N`ð  %bð  %bñ  cô  cð  cØ�F˜;Ñ'Ô'Ð'Ø �L ¨Ñ.Ô.Ð.Øði}Kð }Kð }Kñ }Kô }Kð }Kð }Kð }Kðj %ð Ø—O’OÐ$hÐWfÐ$hÐ$hÑiÔiÐiØ�F˜;Ñ'Ô'Ð'Ø �L °Ñ?Ô?Ð?Ø.ð 3Ø$˜ ]µNÔ4Uð  WBð  IQð  [bð  5cñ  5cô  5cñ  dô  dð  dð  dà×-Ò-Ñ/Ô/Õ3IÒIÐIØ ×-Ò-¨eÑ4Ô4Ð4Ø$˜ ]µNÔ4UÐVZÐdiÐszÐ4{Ñ4{Ô4{Ñ|Ô|Ð|Ø$˜ V¨TÑ2Ô2Ð2ØðA}Kð }Kð }Kñ }Kô }Kð }Kð }Kð }KðB —’ð  !FÀ?ð  !Fð  !FÕadÐelÔe}ð  fCð  BCñ  bDô  bDð  !Fð  !Fñ  Gô  Gð  GØ��y°/ÐBÑBÔBÐBØ Ð,Ø�H˜]¨MÑ:Ô:Ð:Ø×,Ò,¨U°HÀgÐ,ÑNÔN�ð7KØ—O’OÐ$jÐYhÐ$jÐ$jÑkÔkÐkØ�~Øœ
×>Ò>¸uÀbÈ$ÐPTÐWeÐVfÐhlÐnrÐtyð  |Að  CDð  FJð  LOð  QYð  [cñ  dô  dð  dð  dà(.Ð/AÔ(BÐ K  È˜Ø×6Ò6°u¸dÀEÈNÐK[Ð]cÐdjÔ]kÐv~ð  GOð  _eÐ6ñ  fô  fð  føøÝ ð uð uð uÝ+/µ¸Ð;QÐSXÑ0YÔ0YÑ+ZÔ+ZÐ(Ø/ð .Ý!Ô+Ñ-Ô-Ð-Ý$2Ô$HÈÑ$QÔ$Q�MØ.ð jÝ&Ô8¸À-ÐQhÑiÔiÐiÝ/°¸ÑGÔGÐGÝ"0Ô"FÀwÐP]Ði}ð  `]Õ_bÐcdÑ_eÔ_eÐ_eð  D]ð  Z[ð  D]ð  D]ñ  #^ô  #^�KØ"Ð.Ø ˜ °Ñ<Ô<Ð<Ø�H˜]­NÔ,MÈdÐ\aÐkrÐ,sÑ,sÔ,sÑtÔtÐtÐtÐtÐtÐtÐtøøøøðuøøøõ "Ô3°GÑ<Ô<Ð<ØÔ/ð <ð <ØÔ9¸WÐDÐDØ=A˜DÔ:Ø05˜Ô-Ý-0°Ô1KÐ1QÈrÑ-RÔ-RÐ*Ø%1°WÔ5GÒ%G˜
Ø,>Ð(>Ð(rÀzÀ>Ð(rÐV]ÔVnÐqrÒVr˜Ø,ð 9°Ô1FÈ,Ð1VÐ1VØ48˜GÔ1Ý-¨gÑ6Ô6Ð6Ø+8ð  ,|½Sð  A|ð  A|ð  dkô  d{ð  A|ñ  A|ô  A|ñ  >|ô  >|Ð(Ø3@ð  (w t tÐRVÐ`hð  uEð  svð  sqð  sqð  Kvð  Gwð  Gw˜ØfsÐ%}¥^Ô%DÀWÐUaÐ%bÑ%bÔ%bÐ%bÐy}˜
Ý&*¨7Ô+FÑ&GÔ&G˜Ø6;˜Ô3ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð *ð 	}Ø×4Ò4°U¸GÐEWÑXÔXÐXØ$˜ ]µNÔ4TÐU\Ñ4]Ô4]Ñ^Ô^Ð^Ð^Ø#ð }Ø'ð cØ(˜L¨½Ô8XÐY`Ñ8aÔ8aÑbÔbÐbøØ&ð }Ø$˜ ]°JÑ?Ô?Ð?Ð?à$˜ ]µNÔ4UÐVZÐdiÐszÐ4{Ñ4{Ô4{Ñ|Ô|Ð|Ø—O’Oð  %GÀð  %Gð  %GÕ_cÐdnÑ_oÔ_oð  %Gð  %Gõ  AEð  FSñ  ATô  ATð  %Gð  %Gõ  cfð  gnô  gð  gDð  CDñ  cEô  cEð  %Gð  %Gñ  Hô  Hð  HØ(ð HØ×-Ò-Ñ/Ô/Õ3IÒIÐIØ ×-Ò-¨eÑ4Ô4Ð4Ø+×EÒEÑGÔGð LØ ŸOšOð  -Kð  yHð  -Kð  -Kð  -Kñ  Lô  Lð  LØ$˜ V¨TÑ2Ô2Ð2ØŸšð  )GÐ[jð  )Gð  )GÐnz÷  oCò  oCñ  oEô  oEð  )Gð  )Gñ  Hô  Hð  HØÔ-×1Ò1Ñ3Ô3Ð3Ø�F˜:°ÐT_ð  UJÐcmð  UJÕquð  wIñ  rJô  rJð  Kñ  Kô  Kð  Kñ  KøõG "Ô3°GÑ<Ô<Ð<ØÔ/ð <ð <ØÔ9¸WÐDÐDØ=A˜DÔ:Ø05˜Ô-Ý-0°Ô1KÐ1QÈrÑ-RÔ-RÐ*Ø%1°WÔ5GÒ%G˜
Ø,>Ð(>Ð(rÀzÀ>Ð(rÐV]ÔVnÐqrÒVr˜Ø,ð 9°Ô1FÈ,Ð1VÐ1VØ48˜GÔ1Ý-¨gÑ6Ô6Ð6Ø+8ð  ,|½Sð  A|ð  A|ð  dkô  d{ð  A|ñ  A|ô  A|ñ  >|ô  >|Ð(Ø3@ð  (w t tÐRVÐ`hð  uEð  svð  sqð  sqð  Kvð  Gwð  Gw˜ØfsÐ%}¥^Ô%DÀWÐUaÐ%bÑ%bÔ%bÐ%bÐy}˜
Ý&*¨7Ô+FÑ&GÔ&G˜Ø6;˜Ô3ð<ð <ð <ñ <ô <ð <ð <ð <ð <ð <ð <øøøð <ð <ð <ð <ð *ð 	}Ø×4Ò4°U¸GÐEWÑXÔXÐXØ$˜ ]µNÔ4TÐU\Ñ4]Ô4]Ñ^Ô^Ð^Ð^Ø#ð }Ø'ð cØ(˜L¨½Ô8XÐY`Ñ8aÔ8aÑbÔbÐbøØ&ð }Ø$˜ ]°JÑ?Ô?Ð?Ð?à$˜ ]µNÔ4UÐVZÐdiÐszÐ4{Ñ4{Ô4{Ñ|Ô|Ð|Ø—O’Oð  %GÀð  %Gð  %GÕ_cÐdnÑ_oÔ_oð  %Gð  %Gõ  AEð  FSñ  ATô  ATð  %Gð  %Gõ  cfð  gnô  gð  gDð  CDñ  cEô  cEð  %Gð  %Gñ  Hô  Hð  HØ(ð HØ×-Ò-Ñ/Ô/Õ3IÒIÐIØ ×-Ò-¨eÑ4Ô4Ð4Ø+×EÒEÑGÔGð LØ ŸOšOð  -Kð  yHð  -Kð  -Kð  -Kñ  Lô  Lð  LØ$˜ V¨TÑ2Ô2Ð2ØŸšð  )GÐ[jð  )Gð  )GÐnz÷  oCò  oCñ  oEô  oEð  )Gð  )Gñ  Hô  Hð  HØÔ-×1Ò1Ñ3Ô3Ð3Ø�F˜:°ÐT_ð  UJÐcmð  UJÕquð  wIñ  rJô  rJð  Kñ  Kô  Kð  Kð  Køøøð  Kð{}Kð }Kð }Kñ }Kô }Kð }Kð }Kð }Kð }Kð }Kð }Kð }Køøøð }Kð }Kð }Kð }Kð }Kð }KsÏ   ’<k6ÁI"J<Ê0k6Ê<K 	Ë k6ËK 	ËA k6ÌB5k6ÏA"k6Ð6A3R*Ò)`7Ò*
VÒ4CVÕ<`7ÖVÖ`7Ö	k6Ö$CY>Ù2k6Ù>Z	Úk6ÚZ	ÚF1k6à7k%áCd-	ä!k%ä-d1ä1k%ä4d1ä5F0k%ë%k6ë6k:ë=k:r;  r¶   )rM  rU   rÂ   r#  r›   r*  rí  r@   rï  r.  r¯   r°   r¥   r)   rð   rB   rE  )r£   rõ   rØ   re   rà  rú  r   rõ  rö  r÷  rø  rù  Ú_user_eventrG  rU  Útask_handler  r  rT  r  rñ  s   ````````        @@@@@rj   Ú_queue_assistant_requestz(DeepyController._queue_assistant_request5  sÙ  øøøøøøøøøøøøø€ Ø#Ô(ˆÝ˜oÐ3°Ñ4Ô4×:Ò:Ñ<Ô<ˆØ&Ð.��µD¸Ñ4GÔ4Gˆð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð Ô#ð 	5ð 	5ØÐ$Ô$¨Ñ)Ð$Ô$Øˆ~Ø×4Ò4°W¸kÑJÔJÐJÝ/=Ô/NÈwÐXcÐlrð  J^ð  fkð  tzð  0{ñ  0{ô  0{Ñ,� Ø"ð .Ý"0Ô">¸wÈÑ"XÔ"X�KØ5D�KÐ 1Ñ2Ø+-�K Ñ(øå"% fÐ->Ô&?Ñ"@Ô"@�Ø�OŠOð  YÀð  Yð  YÕY]Ð^dÑYeÔYeð  Yð  YÕtwÐxô  yQð  yVð  UVñ  uWô  uWð  Yð  Yñ  Zô  Zð  ZÝÔ+¨GÑ4Ô4Ð4ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kð ~	Kõ@ # ;Ð0AÑBÔBˆØð 	GØ;FˆGÔ'¨Ñ8Ø Ð+Ð+s   Á!CD=Ä=EÅEc                óž   — | j                              |¦  «        }	 t          |¦  «        }n# t          $ r d }Y nw xY w|�|dk     rd n||d<   d S )Nr   Úselected_video_time)r—   r�   Úfloatr§   )r£   rõ   Úcurrent_timeÚgenÚvalues        rj   Ústore_selected_video_timez)DeepyController.store_selected_video_timeÞ  sp   € ØŒj×%Ò% eÑ,Ô,ˆð	Ý˜,Ñ'Ô'ˆEˆEøÝð 	ð 	ð 	ØˆEˆEˆEð	øøøà-2¨]¸eÀaºi¸i T TÈUˆÐ!Ñ"Ð"Ð"s   œ, ¬;º;c           	     óÞ  — |€t          |¦  «        n|}|                      ¦   «         t          k    �r:ddlm} |j        �œ| j        �•ddlm} | j         	                    ¦   «         }| j         
                    |¦  «        } ||¦  «        j        }	|j        }
t          |
j        dd ¦  «        |k    s|
j        j        |	k    r|
                     ¦   «          d |_        |j        €h| j                             |¦  «        }t%          || j        j        ||| j        j        | j        j        | j        ¬¦  «        } |||||¬¦  «        |_        n|j                             ||¦  «         |j        S |j        � |j                             ¦   «          d |_        | j                             |¦  «        }t%          || j        j        ||| j        j        | j        j        | j        ¬¦  «        }d|_        |S )Nr   )ÚDeepyPrimeTools©Úbuild_file_access_policyÚ_workspace_id)rØ   rƒ   r„   rp   )Ú
zero_toolsT)r5   rÔ   r   Úshared.deepy.prime_toolsra  rW  r    Úshared.deepy.filesystemrc  Údeepy_workspace_idÚworkspace_output_configÚoutput_rootsrV  Ú_api_sessionÚfile_access_policyÚcloser—   r�   r?   r‚   rƒ   r„   rœ   Ú	bind_turnÚzero_catalog)r£   rõ   r  rØ   r  ra  rc  Úworkspace_idrÏ   Úexpected_rootsÚcurrentr]  re  r+  s                 rj   r5  zDeepyController.create_toolsæ  s@  € ØCJÀ?Õ8¸Ñ?Ô?Ð?ÐX_ˆØ×ÒÑ Ô Õ$4Ò4Ñ4Ø@Ð@Ð@Ð@Ð@Ð@àÔ+Ð7¸DÔ<OÐ<[ØLÐLÐLÐLÐLÐLØ#Ô2×EÒEÑGÔG�ØÔ,×DÒDÀ\ÑRÔR�Ø!9Ð!9¸&Ñ!AÔ!AÔ!N�Ø(Ô6�Ý˜7Ô/°À$ÑGÔGÈ<ÒWÐWÐ[bÔ[uô  \Cð  GUò  \Uð  \UØ—M’M‘O”O�OØ37�NÔ0àÔ+Ð3Ø”j×-Ò-¨eÑ4Ô4�Ý+¨C°´Ô1OÐQYÐcqð  HLô  HRô  Hfð  }Aô  }Gô  }\ð  ptô  pCð  Dñ  Dô  D�
Ø/>¨¸uÀhÐP^ÐkuÐ/vÑ/vÔ/v�Ô,Ð,àÔ,×6Ò6°u¸hÑGÔGÐGØ!Ô/Ð/ØÔ'Ð3ØÔ(×.Ò.Ñ0Ô0Ð0Ø+/ˆNÔ(ØŒj×%Ò% eÑ,Ô,ˆÝØØŒJÔ*ØØ"Ø $¤
Ô >Ø!%¤Ô!@Ø"Ô1ð
ñ 
ô 
ˆð "ˆÔØˆrl   útuple[str, str]c                ó4  — t          | dd ¦  «        }|�'|                     |                     ¦   «         ¦  «        n|                      ¦   «         }|                      ¦   «         t
          k    rk|j        |_        |j        j        rdnd}d|j        j        › d|› �}|j	        r
d|j	        › �nd}t          › d|                     ¦   «         › d|› |› �t          fS dd	lm} dd
lm}	m}
m} | j        s|j        rt+          j        |¦  «        nt+          j        |j        ¦  «        } |	 ||¦  «        |j        |¦  «        }||_        t2          }t4          }|j        r |j        rdnd}|j        rdnd}d|› d|› d�}nd}|› d|› �} |
|¦  «        }|r|› d|› �}||fS )Nr    z9Reading may extend outside these roots; writing does not.z.Use authorized @alias paths from IO discovery.zAFilesystem access outside the session workspace is configured as z. ú

rÁ   r   rb  )Úadd_session_workspaceÚlong_text_system_instructionsÚlong_text_tools_activez
read/writez	read-onlyzVReading is allowed everywhere; writing remains limited to output and selected folders.z@Use @alias/path from list_files roots; plain paths use @outputs.zFilesystem z access is enabled. zÜ Files are toolbox actions: list_files without a path lists the roots, with a path one folder (pages: repeat with cursor=next_cursor while has_more); rg searches recursively; query_file reads one file's metadata or text.zNFilesystem access is disabled. Use Gallery/media ids rather than direct paths.)rV  ri  rh  rœ   rÔ   r   rl  Úread_everywhereÚmodeÚplugin_instructionsr%   Úget_system_instructionsr   rg  rc  Úshared.deepy.long_textrv  rw  rx  rŸ   Ústorage_session_dirr)   Úsession_workspacer  r  r&   r   Úread_enabledÚwrite_enabled)r£   rØ   r+  Úhostr¾   ÚscopeÚaccessÚjobrc  rv  rw  rx  Ú	workspacerl  Úsystem_promptÚcustom_system_prompt_keyÚfile_access_instructionsÚexperimental_instructionss                     rj   Ú_build_session_system_promptz,DeepyController._build_session_system_prompt  s–  € Ý�tÐ-¨tÑ4Ô4ˆØSWÐSc˜×4Ò4°T×5LÒ5LÑ5NÔ5NÑOÔOÐOÐim×i|Òi|Ñi~Ôi~ˆØ×ÒÑ Ô Õ$4Ò4Ð4Ø).Ô)AˆGÔ&ØSXÔSkÔS{ð  rÐOÐOð  BrˆEð BÐY^ÔYqÔYvð  Bð  BÐzð  Bð  BˆFØ:AÔ:UÐ]Ð6˜Ô4Ð6Ð6Ð6Ð[]ˆCÝ)ÐaÐa¨u×/LÒ/LÑ/NÔ/NÐaÐaÐTZÐaÐ\_ÐaÐaõ  dHð  Hð  HØDÐDÐDÐDÐDÐDØwÐwÐwÐwÐwÐwÐwÐwÐwÐwà@DÔ@[ð  EÐ_fÔ_zð  E•MÔ3°GÑ<Ô<Ð<õ  ANô  Alð  mtô  mDñ  AEô  AEˆ	Ø2Ð2Ð3KÐ3KÈMÑ3ZÔ3ZÐ\cÔ\sÐu~ÑÔÐØ%7ˆÔ"Ý*ˆÝ#FÐ ØÔ*ð 	xØ%7Ô%EÐV�\�\È;ˆFð qCô  qSð  [ÐlÐlð  Y[ˆEð (u°Vð  (uð  (uÐQVð  (uð  (uð  (uÐ$Ð$à'wÐ$Ø(ÐHÐHÐ.FÐHÐHˆØ$AÐ$AÐBTÑ$UÔ$UÐ!Ø$ð 	NØ,ÐMÐMÐ2KÐMÐMˆMØÐ6Ð6Ð6rl   rf  r‡  rˆ  rˆ  r,   c               ó  ‡ ‡‡— t          |t          ˆ ˆfd„dˆ ˆfd„	dˆ ˆfd„	ˆ ˆfd„ˆˆ fd„‰ j        j        ‰ j        ˆˆ fd„‰ j        j        ¬	¦	  «	        ||‰                      ¦   «         |‰                      ¦   «         ||¬
¦	  «	        S )Nc                 ó8   •— ‰ j                              ‰¦  «        S r¶   )r—   r|   ©r£   rõ   s   €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>-  s   ø€  D¤J×$:Ò$:¸5Ñ$AÔ$A€ rl   FTc                ó@   •— ‰j                              ‰| ||¬¦  «        S )Nr³  )r—   r}   )rŠ  r‹  r´  r£   rõ   s      €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>.  sN   ø€ Ðy}ô  zD÷  zPò  zPð  QVð  fsð  K`ð  {Sð  zPñ  zTô  zT€ rl   c                ó>   •— ‰j                              ‰| |¬¦  «        S )N)r‹  r´  )r—   r~   )r‹  r´  r£   rõ   s     €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>/  sC   ø€ ÐlpÔlv÷  mMò  mMð  NSð  k@ð  [sð  mMñ  mtô  mt€ rl   c                 ó8   •— ‰ j                              ‰¦  «        S r¶   )r—   r   rŽ  s   €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>0  s   ø€ ¨4¬:×+HÒ+HÈÑ+OÔ+O€ rl   c                 ó:   •— ‰j                              ‰ ¬¦  «        S ©Nrf  )r—   rv   ©rg  r£   s   €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>1  s   ø€  d¤j×&NÒ&NÐ`pÐ&NÑ&qÔ&q€ rl   c                 ó0   •— ‰                      ‰ ¬¦  «        S r“  )rk  r”  s   €€rj   rz  z5DeepyController._build_local_engine.<locals>.<lambda>4  s   ø€ ¨T×-GÒ-GÐYiÐ-GÑ-jÔ-j€ rl   r�  )r²   rˆ  r‰  r‡  rˆ  )FNTrè  )r,   r-   r—   rx   ro  r{   r³   rb  )	r£   rõ   rØ   r+  r  r‡  rˆ  rˆ  rg  s	   ``      `rj   Ú_build_local_enginez#DeepyController._build_local_engine)  sú   øøø€ ÝØÝ!ØAÐAÐAÐAÐAð Tð  Tð  Tð  Tð  Tð  Tð 'tð  'tð  'tð  'tð  'tð  'tØ#OÐ#OÐ#OÐ#OÐ#OØqÐqÐqÐqÐqØ#œzÔHØ#Ô3Ø%jÐ%jÐ%jÐ%jÐ%jØ$(¤JÔ$Fð
ñ 
ô 
ð ØØ×2Ò2Ñ4Ô4Ø-Ø×(Ò(Ñ*Ô*Ø'Ø%=ð'
ñ 
ô 
ð 	
rl   c
           
     ó”  — |                       ¦   «         }
|                      ¦   «         }t          |                     t          d¦  «        ¦  «        st          j        t          ¦  «        ‚t          |¦  «        s!t          j        t          |¦  «        ¦  «        ‚|�|€t          j        d¦  «        ‚|                     dd¦  «        }|                     dd¦  «        }|                     dd¦  «        }|	�|	d	         n!|rt          j        d
¦  «        n|�|dk    r|nd}t          |¦  «        }|}|                      |¦  «        |_        |                      ||¦  «        \  }}t!          |d¦  «        }t#          |¦  «        r×|	�t%          d¦  «        ‚ddlm} ddlm}  ||                     |d¦  «        ¦  «        }t/          |dd ¦  «        }t1          |¦  «        r+t3           |¦   «         pd¦  «                             ¦   «         nd}d                     d„ |||fD ¦   «         ¦  «                             ¦   «         } ||||r|d         nd|||¦  «        S | j                             d||dd¬¦  «        \  }}|	�t=          |	d         ¦  «        nt?          dt=          |¦  «        ¦  «        }|	�tA          |	d         ¦  «        nd|v }|  !                    ||||||||¬¦  «        }tE          |
¬¦  «        5  | #                    tI          |¦  «        dk    r|d         nd||d|||	¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   z=Assistant mode requires a command stream and a tool registry.Úprompt_enhancer_temperatureg333333ã?Úprompt_enhancer_top_pgÍÌÌÌÌÌì?Úprompt_enhancer_randomize_seedTrË  é    rJ   zGPersistent action replay is only available for the local Deepy runtime.)Ú$normalize_deepy_custom_system_prompt)Úrun_remote_deepy_turnrÁ   Úget_system_contextru  c              3  ó   K  — | ]}|¯|V — Œ	d S r¶   r‹   )rÎ   Úparts     rj   r/  z<DeepyController.run_assistant_prompt_turn.<locals>.<genexpr>[  s(   è è € Ð.wÐ.w¸ÐrvÐ.w¨tÐ.wÐ.wÐ.wÐ.wÐ.wÐ.wrl   Fi   )Úis_imageÚtext_encoder_max_tokensÚmax_new_tokensrˆ  ÚK)rˆ  rg  r¬   )r£  rË  Ú	do_sampleÚtemperatureÚtop_pr÷  )%r³   rœ   r   r�   r   r¼   rh  r^  r   r   ÚsecretsÚrandbitsr5   rÚ   Úsession_environmentr‹  rF   rE   rº  Úshared.deepy.configrœ  Úshared.remote_llm.deepy_runnerr�  rV  rX  rU   rÂ   rÙ  r—   rs   r¥   r,  r°   r–  r*   Úrun_turnr]   )r£   rõ   Ú	model_defÚprompt_enhancer_modesÚoriginal_promptsrË  rg  r  r+  r÷  r²   r¾   Úenhancer_temperatureÚenhancer_top_pÚrandomize_seedÚassistant_seedrØ   Úassistant_model_defr‡  rˆ  Úremote_enginerœ  r�  Úcustom_promptÚsystem_context_getterÚsystem_contextÚremote_system_promptÚ_assistant_instructionsÚassistant_max_new_tokensrˆ  r;  s                                  rj   r6  z)DeepyController.run_assistant_prompt_turn@  s…  € Ø×0Ò0Ñ2Ô2ˆØ×+Ò+Ñ-Ô-ˆÝ& }×'8Ò'8Õ9JÈAÑ'NÔ'NÑOÔOð 	1Ý”(Õ/Ñ0Ô0Ð0Ý$ ]Ñ3Ô3ð 	CÝ”(Õ2°=ÑAÔAÑBÔBÐBØÐ˜u˜}Ý”(ÐZÑ[Ô[Ð[Ø,×0Ò0Ð1NÐPSÑTÔTÐØ&×*Ò*Ð+BÀCÑHÔHˆØ&×*Ò*Ð+KÈTÑRÔRˆØ2?Ð2K˜ vÔ.Ð.Ðjxð  SnÕRYÔRbÐceÑRfÔRfÐRfð  HLð  HXð  ]að  efò  ]fð  ]fð  @Dð  @Dð  lmˆÝ1°%Ñ8Ô8ˆØ'ÐØ&*×&?Ò&?ÀÑ&HÔ&HˆÔ#Ø26×2SÒ2SÐT[Ð]bÑ2cÔ2cÑ/ˆÐ/Ý+¨M¸7ÑCÔCˆÝ˜MÑ*Ô*ð 
	YØÐ(Ý"Ð#lÑmÔmÐmØPÐPÐPÐPÐPÐPØLÐLÐLÐLÐLÐLà@Ð@À×ARÒARÐSkÐmoÑApÔApÑqÔqˆMÝ$+¨EÐ3GÈÑ$NÔ$NÐ!ÝKSÐTiÑKjÔKjÐr�SÐ!6Ð!6Ñ!8Ô!8Ð!>¸BÑ?Ô?×EÒEÑGÔGÐGÐprˆNØ#)§;¢;Ð.wÐ.wÀÐP]Ð_mÐ@nÐ.wÑ.wÔ.wÑ#wÔ#w×#}Ò#}Ñ#Ô#Ð Ø(Ð(¨¸ÐXhÐApÐAQÐRSÔATÐATÐnpð  sGð  INð  PXñ  Yô  Yð  YØ<@¼J×<gÒ<gÐhjÐlð  BWð  bgð  AEÐ<gñ  =Fô  =FÑ9ÐÐ!9ØKXÐKd¥3 }Ð5EÔ'FÑ#GÔ#GÐ#GÕjmÐnrÕtwð  yQñ  uRô  uRñ  kSô  kSÐ ØFSÐF_�4 Ð.@Ô AÑBÔBÐBÐehð  mBð  fBÐØ×,Ò,¨U°G¸UÀHÈmÐ]uð  IYð  l|Ð,ñ  }ô  }ˆ	Ý¨]Ð;Ñ;Ô;ð 		ð 		Ø×ÒÝ'*Ð+;Ñ'<Ô'<¸qÒ'@Ð'@Ð  Ô#Ð#ÀbØ7Ø#ØØ0Ø$Ø+ð ñ ô ð ð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		s   Ë88L=Ì=MÍMÚsteeringc              #  ón   ‡ K  — ddl m}  |‰                      ||||¦  «        ˆ fd„¦  «        E d {V —† d S )Nr   )Úgradio_chat_updatesc                 ó6   •— ‰ j                              ¦   «         S r¶   )r—   r€   r¨   s   €rj   rz  z(DeepyController.ask_ai.<locals>.<lambda>n  s+   ø€ Ðw{ô  xB÷  xUò  xUñ  xWô  xW€ rl   )Úshared.deepy.driversr¿  Úiter_commands)r£   rõ   rà  rõ  r½  r¿  s   `     rj   Úask_aizDeepyController.ask_ail  s•   øè è € Ø<Ð<Ð<Ð<Ð<Ð<Ø&Ð& t×'9Ò'9¸%ÀÐNbÐdlÑ'mÔ'mð  pWð  pWð  pWð  pWñ  Xô  Xð  	Xð  	Xð  	Xð  	Xð  	Xð  	Xð  	Xð  	Xð  	Xrl   )rø  rù  c             #  óÐ  ‡)K  — |                       ¦   «         }t          |pd¦  «                             ¦   «         d d…         }|r|gng }	t          |¦  «        Š)|                      ‰)¦  «        }
|€|                      ‰)|¦  «        n#t          |pd¦  «                             ¦   «         g}t          |¦  «        dk    r3|r|                      d¦  «         dt          j	        ‰)|	¬¦  «        fV — d S |ra|                      dt          |¦  «        › dt          ‰)j        ¦  «        › d	t          ‰)j        pd¦  «        › d
t          |
¦  «        › �¦  «         ‰)j        r:|r|                      d¦  «         ddddœ}dt          j	        ‰)||	¬¦  «        fV — d S |                      ¦   «         s„|r*|                      d|                      ¦   «         › �¦  «         t          j        ‰)¦  «        }t          j        ‰)||                      ¦   «         ¦  «         dt          j	        ‰)|	¬¦  «        fV — d S | j        �T| j        5  |                      ‰)|d         ¦  «         d d d ¦  «         n# 1 swxY w Y   | j                             ¦   «          |�r| j        5  t          ‰)j        o‰)j        d u¦  «        }|�r^‰)j        }‰)j        }‰)j        5  ‰)j        }t7          |t8          ¦  «        }d d d ¦  «         n# 1 swxY w Y   g }g }t;          |¦  «        D ][\  }}|                      |‰)|||d||r|dk    rdnd¬¦  «        \  }}|r*|                     |¦  «         |                     |¦  «         Œ\|r‡tA          d|¦  «        stC          d¦  «        ‚tE          ‰)¦  «        stC          d¦  «        ‚‰)j#        rd}n‰)j$        rd}n‰)j%        rd}nd}t          j&        ‰)|||	¬¦  «        }|€tC          d¦  «        ‚nd}t          j	        ‰)dd|dœ|	¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |ru|                      d|› dt          ‰)j%        ¦  «        › d t          ‰)j$        ¦  «        › d	t          ‰)j        pd¦  «        › �¦  «         | '                    d|¦  «         d!V — d S | j        5  ‰)j        }|d uo‰)j        p
‰)j        dk    }|rE‰)j        }|D ] }|                      |‰)|||d|||¬"¦	  «	         Œ!t          j	        ‰)ddddœ|	¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |r| '                    d|¦  «         d!V — d S tQ          ¦   «         }tS          ˆ)fd#„¦  «        |_*        |j*        }| j        5  |
p‰)j        p
‰)j        dk    }‰)j        }|‰)_        t;          |¦  «        D ])\  }}|                      |‰)||||p|dk    |||¬"¦	  «	         Œ*|rd ndd$d%dœ} t          j	        ‰)| |	¬¦  «        }!| '                    d|!¦  «         |st          |¦  «        d&k    r+| '                    dt          j+        dd‰)¬'¦  «        ¦  «         d d d ¦  «         n# 1 swxY w Y   	 |j*         ,                    ¦   «         \  }"}#|"d(k    rt[          |#¦  «         �nV|"dk    r¬t]          |j*        |#¦  «        }$|rVt^          rOta          j1        |$¦  «        }%|% 2                    d)|%g¦  «        }&d*„ |&D ¦   «         }'|                      d+|'› �¦  «         	 d|$fV — |j*         3                    ¦   «          nÂ# |j*         3                    ¦   «          w xY w|"d,k    r|"|#fV — n—|"d-k    r|"|#fV — nŠ|"d.k    r|"|#fV — n}|"d/k    r@t          j        ‰)¦  «        }t          j        ‰)|t          |#pd0¦  «        ¦  «        }(d|(fV — n7|"d1k    r1|                      d2|j*         4                    ¦   «         › �¦  «         d S �Œ‹)3NrÁ   é€   r   z9Request ignored because it was empty after normalization.rY   ©Úacknowledged_submission_idszRequest received blocks=z worker_active=r>  z foreign_session_reset=z.Request held because a Deepy reset is pending.Tr   ú)Resetting after the current work stops...r   ©r±  rÇ  zRequest rejected: r.  )r   rõ  rö  r;  zGNew steering request batch was not present in the assistant task queue.z:Active assistant turn disappeared while applying steering.r<  zLSteering accepted. Steering will apply once the current tool action is done.z?Steering accepted. Waiting for the current thought to finish...zKSteering accepted. Applying the new instructions at the current boundary...)r=  rÇ  zMNew steering request batch could not be promoted in the assistant transcript.r&  z2Steering requested worker_active=True active_turn=z thought_active=z action_active=)Úrequest_acceptedNr  c                 ó,   •— t          j        ‰ ¦  «        S r¶   ©r@   r2  r(  s   €rj   rz  z/DeepyController.iter_commands.<locals>.<lambda>Ç  ó   ø€ ÅÔ@_Ð`gÑ@hÔ@h€ rl   r  r  rX   r'  Úconsole_outputÚbatchc                ó¼   — g | ]Y}|                      d i ¦  «                              dd¦  «        › d|                      d i ¦  «                              dd¦  «        › �‘ŒZS )r  r  Ú?ú:r  r  )r�   ©rÎ   Úitems     rj   rÐ   z1DeepyController.iter_commands.<locals>.<listcomp>Ý  s}   € ð  #Sð  #Sð  #Sð  AE d§h¢h¨w¸Ñ&;Ô&;×&?Ò&?ÀÈÑ&LÔ&LÐ#{Ð#{ÈtÏxÊxÐX_ÐacÑOdÔOd×OhÒOhÐisÐuxÑOyÔOyÐ#{Ð#{ð  #Sð  #Sð  #Srl   zPublishing chat batch: r  Úabort_client_idr  r  úAssistant error.r%  zPublication metrics: )5r³   rU   rÂ   r5   r  ræ  r]   r¯   r@   r2  r°   rï   r¥   r*  r£  r\  r`  r9  r:  r    r›   rí  rð  rL  r  r	  rH  r`   r#  Ú	enumeraterX  rc   rD   rº  r:   rF  Úassistant_action_activeÚassistant_thought_activeÚsteer_queued_messagesrM  rA   r+   re   r4  Únextr®   rk   r  r?  r@  r�   Úcomplete_publicationr>  )*r£   rõ   rà  rõ  r½  rø  rù  r²   Úsubmission_idrÇ  Úforeign_session_resetÚrequest_blocksr±  rM  Ústeering_activere   rú  Ú
checkpointÚsteered_current_turnÚsteered_message_idsÚsteered_tasksÚindexÚrequest_blockr&  rQ  Ústeering_textÚsteering_syncÚexisting_output_queueÚenqueue_activeÚqueued_syncÚ
com_streamr   Úaccepted_statusÚaccepted_syncr  r  rO  ÚenvelopeÚ	publishedÚdescriptorsrN  rØ   s*                                            @rj   rÂ  zDeepyController.iter_commandsp  sF  øè è € Ø×0Ò0Ñ2Ô2ˆÝÐ0Ð6°BÑ7Ô7×=Ò=Ñ?Ô?ÀÀÀÔEˆØ9FÐ&N } o oÈBÐ#å1°%Ñ8Ô8ˆØ $× BÒ BÀ7Ñ KÔ KÐàRWÐR_˜×8Ò8¸À+ÑNÔNÐNÕfiÐjuÐj{Ðy{Ñf|Ôf|÷  gCò  gCñ  gEô  gEð  fFˆÝˆ~ÑÔ !Ò#Ð#Øð ]Ø—’Ð [Ñ\Ô\Ð\Ø¥Ô!@Àð  gBð  "Cñ  "Cô  "Cð  Cð  Cð  Cð  CØˆFØð 	_Ø�OŠOð  ^µs¸>Ñ7JÔ7Jð  ^ð  ^Õ[_Ð`gÔ`uÑ[vÔ[vð  ^ð  ^õ  FIð  JQô  Jbð  Jgð  fgñ  Fhô  Fhð  ^ð  ^õ  AEð  F[ñ  A\ô  A\ð  ^ð  ^ñ  _ô  _ð  _ØÔ'ð 	Øð RØ—’Ð PÑQÔQÐQØ!%¨xÐAlÐmÐmˆFØ¥Ô!@ÀÐQWð  vQð  "Rñ  "Rô  "Rð  Rð  Rð  Rð  RØˆFØ× Ò Ñ"Ô"ð 	Øð VØ—’Ð T°T×5PÒ5PÑ5RÔ5RÐ TÐ TÑUÔUÐUÝ*Ô@ÀÑIÔIˆMÝÔ0°¸-È×IdÒIdÑIfÔIfÑgÔgÐgØ¥Ô!@Àð  gBð  "Cñ  "Cô  "Cð  Cð  Cð  Cð  CØˆFØÔÐ*ØÔ'ð Qð QØ×4Ò4°W¸nÈQÔ>OÑPÔPÐPðQð Qð Qñ Qô Qð Qð Qð Qð Qð Qð Qøøøð Qð Qð Qð Qð Ô×8Ò8Ñ:Ô:Ð:Øñ '	ØÔ'ð !Mð !MÝ"& wÔ'<Ð'bÀÔAVÐ^bÐAbÑ"cÔ"c�Ø"ñ MØ#*Ô#8�LØ#*Ô#5�LØ Ô*ð Lð LØ%,Ô%9˜
Ý/9¸*ÅdÑ/KÔ/KÐ,ðLð Lð Lñ Lô Lð Lð Lð Lð Lð Lð Løøøð Lð Lð Lð Lð +-Ð'Ø$&�MÝ09¸.Ñ0IÔ0Ið 7ð 7Ñ,˜˜}Ø+/×+HÒ+HÈÐPWÐYeÐgtð  wCð  LPð  gtð  Sgð  F~ð  lqð  uvò  lvð  lvð  FOð  FOð  |~Ð+Hñ  ,ô  ,Ñ(˜
 DØ/ð 7Ø/×6Ò6°zÑBÔBÐBØ)×0Ò0°Ñ6Ô6Ð6øØ+ð MÝ2°;ÀÑNÔNð zÝ".Ð/xÑ"yÔ"yÐyÝ9¸'ÑBÔBð mÝ".Ð/kÑ"lÔ"lÐlØ"Ô>ð zØ,l˜M˜MØ$Ô<ð zØ,z˜M˜MØ$Ô=ð zØ,m˜M˜Mà,y˜MÝ(6Ô(LÈWÐVið  xEð  c~ð  )ñ  )ô  )˜Ø(Ð0Ý".Ð/~Ñ"Ô"Ðð 1ð )T˜Ý(6Ô(GÈÐdhÐrzð  ERð  YSð  YSð  qLð  )Mñ  )Mô  )M˜ðC!Mð !Mð !Mñ !Mô !Mð !Mð !Mð !Mð !Mð !Mð !Møøøð !Mð !Mð !Mð !MðD ð Ø—’ð  !KÐUið  !Kð  !KÕ{ð  AHô  Aañ  |bô  |bð  !Kð  !Kõ  swð  xô  xWñ  sXô  sXð  !Kð  !Kõ  gjð  krô  kCð  kHð  GHñ  gIô  gIð  !Kð  !Kñ  Lô  Lð  LØ×!Ò! -°Ñ?Ô?Ð?Ø.Ð.Ð.Ð.Ø�ØÔ#ð 	að 	aØ$+Ô$9Ð!Ø2¸$Ð>ÐzÀGÔDYÐDyÐ]dÔ]uÐxyÒ]yˆNØð aØ&Ô1�Ø%3ð Cð C�MØ×1Ò1°%¸ÐBWÐYfÐhtð  ~Bð  Yfð  nsð  |BÐ1ñ  Cô  Cð  Cð  CÝ,Ô=¸gÐZ^Ðhpð  {fð  Ogð  Ogð  E`ð  añ  aô  a�ð	að 	að 	añ 	aô 	að 	að 	að 	að 	að 	að 	aøøøð 	að 	að 	að 	að ð 	Ø!×&Ò& }°kÑBÔBÐBØ*Ð*Ð*Ð*ØˆFÝ ‘]”]ˆ
Ý"7Ð8hÐ8hÐ8hÐ8hÑ"iÔ"iˆ
ÔØ!Ô.ˆØÔ#ð 
	að 
	aØ*Ðc¨gÔ.CÐcÀwÔG_ÐbcÒGcˆFØ"Ô-ˆLØ$0ˆGÔ!Ý(1°.Ñ(AÔ(Að Eð EÑ$��}Ø×-Ò-¨e°W¸lÈMÐ[gÐpvð  qDÐzð  CDò  {Dð  [hð  puð  ~DÐ-ñ  Eô  Eð  Eð  EØ&,Ðs˜d˜d¸dÈIÐ_rÐ2sÐ2sˆOÝ*Ô;¸GÈOð  zUð  Vñ  Vô  VˆMØ×Ò˜m¨]Ñ;Ô;Ð;Øð a�˜^Ñ,Ô,¨qÒ0Ð0Ø×!Ò! -µÔ1RÐS~ð  FNð  X_ð  2`ñ  2`ô  2`ñ  aô  að  að
	að 
	að 
	añ 
	aô 
	að 
	að 
	að 
	að 
	að 
	að 
	aøøøð 
	að 
	að 
	að 
	að	Ø"Ô/×4Ò4Ñ6Ô6‰IˆC�ØÐ&Ò&Ð&Ý�d‘”�‘Ø˜Ò%Ð%Ý2°:Ô3JÈDÑQÔQ�Ø ð MÕ%@ð MÝ#œz¨'Ñ2Ô2�HØ (§¢¨W°x°jÑ AÔ A�Ið #Sð  #Sð  IRð  #Sñ  #Sô  #S�KØ—O’OÐ$K¸kÐ$KÐ$KÑLÔLÐLðCØ'¨Ð0Ð0Ð0Ð0àÔ+×@Ò@ÑBÔBÐBÐBø�JÔ+×@Ò@ÑBÔBÐBÐBøøøØÐ,Ò,Ð,Ø˜4�i����ØÐ)Ò)Ð)Ø˜4�i����ØÐ)Ò)Ð)Ø˜4�i����Ø˜’�Ý .Ô DÀWÑ MÔ M�Ý,ÔBÀ7ÈMÕ[^Ð_cÐ_yÐgyÑ[zÔ[zÑ{Ô{�Ø# [Ð0Ð0Ð0Ð0Ð0Ø˜’�Ø—’Ð [¸
Ô8O×8WÒ8WÑ8YÔ8YÐ [Ð [Ñ\Ô\Ð\Ø�ñ7	s{   È:I#É#I'É*I'Ê6PËK0Ë$PË0K4	Ë4PË7K4	Ë8DPÐP Ð#P Ò%A%TÔTÔTÕ2CYÙYÙYÜ\$ Ü$\?c              #  óV  K  — |                       ¦   «          t          |¦  «        }t          |pd¦  «                             ¦   «         d d…         }|r|gng }|                      ||¦  «        }t          |¦  «        dk    ret          j        ||¬¦  «        t          j	        ¦   «         t          j	        d¬¦  «        t          j	        ¦   «         t          j	        ¦   «         fV — d S |j
        rldddd	œ}t          j        |||¬
¦  «        t          j	        ¦   «         t          j	        d¬¦  «        t          j	        ¦   «         t          j	        ¦   «         fV — d S |                      ¦   «         s¡t          j        |¦  «        }	t          j        ||	|                      ¦   «         ¦  «         t          j        ||¬¦  «        t          j	        ¦   «         t          j	        d¬¦  «        t          j	        ¦   «         t          j	        ¦   «         fV — d S | j        5  |j        }
|
d uo|j        p
|j        dk    }|rE|j        }|D ]}|                      |||
||d|¬¦  «         Œdddd	œ}t          j        |||¬
¦  «        }d d d ¦  «         n# 1 swxY w Y   |rx|
                     d|¦  «         t          j	        ¦   «         t          j	        ¦   «         t          j	        d¬¦  «        t          j	        ¦   «         t          j	        ¦   «         fV — d S |                      |||¬¦  «        E d {V —† d S )NrÁ   rÅ  r   rÆ  ©r^  Tr   rÈ  r   rÉ  )r   rõ  r&  rY   )rõ  )r³   r5   rU   rÂ   ræ  r]   r@   r2  r¼   rç   r£  r\  r9  r:  r`  r›   rL  rï   r*  r  rX  rM  rÃ  )r£   rõ   rà  rõ  rØ   rÝ  rÇ  rß  r±  rM  re   rê  rú  ræ  rë  s                  rj   Úenqueue_ai_while_busyz%DeepyController.enqueue_ai_while_busyñ  s¬  è è € Ø× Ò Ñ"Ô"Ð"Ý1°%Ñ8Ô8ˆÝÐ0Ð6°BÑ7Ô7×=Ò=Ñ?Ô?ÀÀÀÔEˆØ9FÐ&N } o oÈBÐ#Ø×8Ò8¸À+ÑNÔNˆÝˆ~ÑÔ !Ò#Ð#Ý Ô1°'ÐWrÐsÑsÔsÕuwÔu~ñ  vAô  vAõ  CEô  CLð  SUð  CVñ  CVô  CVõ  XZô  Xañ  Xcô  Xcõ  egô  enñ  epô  epð  pð  pð  pð  pØˆFØÔ'ð 	Ø!%¨xÐAlÐmÐmˆFÝ Ô1°'À&ð  gBð  Cñ  Cô  Cõ  EGô  ENñ  EPô  EPõ  RTô  R[ð  bdð  Reñ  Reô  Reõ  giô  gpñ  grô  grõ  tvô  t}ñ  tô  tð  ð  ð  ð  ØˆFØ× Ò Ñ"Ô"ð 	Ý*Ô@ÀÑIÔIˆMÝÔ0°¸-È×IdÒIdÑIfÔIfÑgÔgÐgÝ Ô1°'ÐWrÐsÑsÔsÕuwÔu~ñ  vAô  vAõ  CEô  CLð  SUð  CVñ  CVô  CVõ  XZô  Xañ  Xcô  Xcõ  egô  enñ  epô  epð  pð  pð  pð  pØˆFØÔ#ð 	Oð 	OØ"Ô0ˆLØ)°Ð5Ðq¸7Ô;PÐ;pÐT[ÔTlÐopÒTpˆNØð OØ&Ô1�Ø%3ð ^ð ^�MØ×1Ò1°%¸À,ÐP]Ð_kÐtxð  P]Ð1ñ  ^ô  ^ð  ^ð  ^Ø%)°8ÐEpÐqÐq�Ý,Ô=¸gÈfð  sNð  Oñ  Oô  O�ð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð ð 	Ø×Ò˜m¨[Ñ9Ô9Ð9Ý”)‘+”+�rœy™{œ{­B¬I¸BÐ,?Ñ,?Ô,?ÅÄÁÄÍbÌiÉkÌkÐYÐYÐYÐYØˆFØ—;’;˜u kÈ�;ÑVÔVÐVÐVÐVÐVÐVÐVÐVÐVÐVs   ÈA%JÊJ
ÊJ
c           
   #  óÊ  ‡K  — t          |¦  «        Š‰j        }|€d S t          ¦   «         }t          ˆfd„¦  «        |_        |j        }| j        5  ‰j        s‰j        dk    rt          j	        d¦  «        ‚‰j
        }|‰_        |                      |‰|t          |d         ¦  «        |d|¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        r	 |                     ¦   «         \  }}|dk    rKt!          ||¦  «        }		  |||	¦  «         |                     ¦   «          n%# |                     ¦   «          w xY w |||¦  «         |d	k    rnŒ|d S 	 |                     ¦   «         \  }}|d
k    rt%          |¦  «         �nÚ|dk    r�t!          ||¦  «        }		 |	t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fV — |                     ¦   «          �n`# |                     ¦   «          w xY w|dk    r—t          j        ¦   «         t          t)          j        ¦   «         ¦  «        dz   t          | j                             ¦   «         ¦  «        z   t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fV — �nª|dk    r^t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          |pd¦  «        fV — �nF|dk    r–t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          t)          j        ¦   «         ¦  «        dz   t          | j                             ¦   «         ¦  «        z   t          j        ¦   «         fV — nª|dk    rœt/          j        ‰¦  «        }
t/          j        ‰|
t          |pd¦  «        ¦  «        }|�|nt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fV — n|d	k    rd S �Œ
)Nc                 ó,   •— t          j        ‰ ¦  «        S r¶   rÌ  r(  s   €rj   rz  z8DeepyController.resume_restored_action.<locals>.<lambda>  rÍ  rl   r   zDeepy is already active.r0  F)r   r÷  TrY   r%  rÎ  r  Ú_rÕ  rÁ   r  r  rÖ  )r5   Úpending_action_replayrA   r+   re   r›   rï   r*  r¼   rh  r  rL  rX  rU   rX  rÛ  rk   rÜ  r®   rç   rZ   r—   r€   r@   r9  r:  )r£   rõ   Úcommand_callbackrT  rì  re   rú  r  r  rO  rM  rN  rØ   s               @rj   Úresume_restored_actionz&DeepyController.resume_restored_action  s¾  øè è € Ý1°%Ñ8Ô8ˆØÔ.ˆØˆ>ØˆFÝ ‘]”]ˆ
Ý"7Ð8hÐ8hÐ8hÐ8hÑ"iÔ"iˆ
ÔØ!Ô.ˆØÔ#ð 	Tð 	TØÔ$ð ;¨Ô(@À1Ò(DÐ(DÝ”hÐ9Ñ:Ô:Ð:Ø"Ô-ˆLØ$0ˆGÔ!Ø×)Ò)¨%°¸,ÍÈFÐS^ÔL_ÑH`ÔH`ÐbnÐw|ð  MSÐ)ñ  Tô  Tð  Tð	Tð 	Tð 	Tñ 	Tô 	Tð 	Tð 	Tð 	Tð 	Tð 	Tð 	Tøøøð 	Tð 	Tð 	Tð 	Tõ Ð$Ñ%Ô%ð 	ðØ(×-Ò-Ñ/Ô/‘	��TØ˜-Ò'Ð'Ý6°|ÀTÑJÔJ�Gð<Ø(Ð(¨¨gÑ6Ô6Ð6à$×9Ò9Ñ;Ô;Ð;Ð;ø˜×9Ò9Ñ;Ô;Ð;Ð;øøøà$Ð$ S¨$Ñ/Ô/Ð/Ø˜&’=�=Øðð ˆFð	Ø$×)Ò)Ñ+Ô+‰IˆC�ØÐ&Ò&Ð&Ý�d‘”�‘Ø˜Ò%Ð%Ý2°<ÀÑFÔF�ð8Ø!¥2¤9¡;¤;µ´	±´½R¼Y¹[¼[Í"Ì)É+Ì+ÐUÐUÐUÐUà ×5Ò5Ñ7Ô7Ð7Ñ7ø�L×5Ò5Ñ7Ô7Ð7Ð7øøøØÐ,Ò,Ð,Ý”i‘k”k¥3¥t¤y¡{¤{Ñ#3Ô#3°cÑ#9½CÀÄ
×@]Ò@]Ñ@_Ô@_Ñ<`Ô<`Ñ#`ÕbdÔbkÑbmÔbmÕoqÔoxÑozÔozÕ|~ô  }Fñ  }Hô  }Hð  Hð  Hð  Hð  Hñ  HØÐ)Ò)Ð)Ý”i‘k”k¥2¤9¡;¤;µ´	±´½R¼Y¹[¼[Í#ÈdÈjÐVXÉ/Ì/ÐYÐYÐYÐYÑYØÐ)Ò)Ð)Ý”i‘k”k¥2¤9¡;¤;µ´	±´½SÅÄÁÄÑ=MÔ=MÐPSÑ=SÕVYÐZ^ÔZd×ZwÒZwÑZyÔZyÑVzÔVzÑ=zÕ|~ô  }Fñ  }Hô  }Hð  Hð  Hð  Hð  Hð  HØ˜’�Ý .Ô DÀWÑ MÔ M�Ý,ÔBÀ7ÈMÕ[^Ð_cÐ_yÐgyÑ[zÔ[zÑ{Ô{�Ø%0Ð%<�k�kÅ"Ä)Á+Ä+ÍrÌyÉ{Ì{Õ\^Ô\eÑ\gÔ\gÕikÔirÑitÔitÕvxÔvñ  wBô  wBð  Bð  Bð  Bð  Bð  BØ˜’�Ø�ñ+	s,   ÁA$CÃCÃCÄ
D+ Ä+EÆ AH ÈHúlist[dict[str, Any]]c                óN   — t          j        |                      ¦   «         ¦  «        S r¶   )r)   Úlist_sessionsrÔ   r¨   s    rj   Úlist_saved_sessionsz#DeepyController.list_saved_sessionsE  s   € ÝÔ*¨4×+>Ò+>Ñ+@Ô+@ÑAÔAÐArl   c                ó¨   — |j         sd S | j        5  t          |d¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             ¦   «          d S )NÚsession_switch)rï   r›   r8   r›  rœ  )r£   rØ   s     rj   Ú_wait_for_turn_boundaryz'DeepyController._wait_for_turn_boundaryH  s­   € ØÔ$ð 	ØˆFØÔ#ð 	Cð 	CÝ'¨Ð1AÑBÔBÐBð	Cð 	Cð 	Cñ 	Cô 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cøøøð 	Cð 	Cð 	Cð 	CàÔ!×&Ò&Ñ(Ô(Ð(Ð(Ð(s   ‘.®2µ2c                óØ  — | j         st          j        d¦  «        ‚t          |¦  «        }|j        r:t
          j        |_        t          |¦  «         dt          j
        dd|¬¦  «        dœS |j        5  |j        rt          j        |¦  «         t          j        |d¬¦  «         |                      |ddd¬	¦  «         d d d ¦  «         n# 1 swxY w Y   dt          j        |¦  «        dœS )
Nz:Enable multi-session mode before starting a saved session.Tú9Starting a new session after the current tool finishes...r   r'  )Úpendingr  Fr  r  )rŸ   r¼   rh  r5   rï   r)   rä   r  r;   r@   r4  r	  rî   r
  r  r  r<  ©r£   rõ   rØ   s      rj   r  z!DeepyController.start_new_sessionO  sl  € ØÔ*ð 	YÝ”(ÐWÑXÔXÐXÝ1°%Ñ8Ô8ˆØÔ ð 	nÝ)6Ô)EˆGÔ&Ý# GÑ,Ô,Ð,Ø#­nÔ.Oð  QLð  S[ð  elð  /mñ  /mô  /mð  nð  nð  nØÔð 	dð 	dØÔ)ð 5ÝÔ+¨GÑ4Ô4Ð4ÝÔ+¨GÀ%ÐHÑHÔHÐHØ×Ò˜e TÀDÐ^bÐÑcÔcÐcð		dð 	dð 	dñ 	dô 	dð 	dð 	dð 	dð 	dð 	dð 	døøøð 	dð 	dð 	dð 	dð
 !­>Ô+KÈGÑ+TÔ+TÐUÐUÐUs   Á3AC
Ã
CÃCc           
     óJ  — t          |¦  «        }|j        5  |j        |j        dœ}|j        rt          j        |¦  «         |j        |d<   n‰|j        r‚d|_        t          j	        |d|  
                    ¦   «         t
          j        |                      |¦  «        d|¬¦  «         t          j        |¦  «         |j        t          |¦  «        c|d<   |d<   t          j        |d	¬
¦  «         d|_        |                      |ddd¬¦  «         ddd¦  «         n# 1 swxY w Y   |S )zUSet the idle conversation aside for a plugin job; unpark_conversation brings it back.)r  Úgallery_workspace_idÚ
storage_idzParked Deepy conversationrÁ   T©Úmedia_importÚ	directoryÚ	parked_idÚ
parked_dirFr  r  N)r5   r	  r  r  rî   r)   r
  r"  Ústorage_titlerê  rÔ   ræ   rÚ   rU   r  r  )r£   rõ   Úparking_dirrØ   Úparkeds        rj   Úpark_conversationz!DeepyController.park_conversation^  s´  € å1°%Ñ8Ô8ˆØÔð 	dð 	dØ)0Ô)@ÐZaÔZvÐwÐwˆFØÔ)ð iÝÔ+¨GÑ4Ô4Ð4Ø'.Ô'A��|Ñ$Ð$ØÔ(ð ià(C�Ô%ÝÔ,¨W°b¸$×:MÒ:MÑ:OÔ:OÕQ^ÔQqÐsw÷  tMò  tMð  NUñ  tVô  tVð  eið  u@ð  Añ  Aô  Að  AÝÔ+¨GÑ4Ô4Ð4Ø<CÔ<VÕX[Ð\gÑXhÔXhÐ9��{Ñ# V¨LÑ%9ÝÔ+¨GÀ%ÐHÑHÔHÐHØ+-ˆGÔ(Ø×Ò˜e TÀDÐ^bÐÑcÔcÐcð	dð 	dð 	dñ 	dô 	dð 	dð 	dð 	dð 	dð 	dð 	døøøð 	dð 	dð 	dð 	dð ˆs   —C5DÄDÄDÚtitleú
str | NoneÚ	new_titlec           
     óÀ  — t          |¦  «        }t          j        |¦  «        }|j        5  |€w|p||_        t          j        |d|                      ¦   «         t          j        |                      |¦  «        d|¬¦  «         t          j
        |¦  «        dg dœcddd¦  «         S 	 t          j        ||                      ¦   «         ¦  «         t          j        |||                      ¦   «         ¦  «        }n## t          $ r t          j        |¦  «         ‚ w xY w|r||_        t          j        ||d         ¦  «        d|d         dœcddd¦  «         S # 1 swxY w Y   dS )	zaMake a session folder outside the catalog the conversation; an empty folder starts a new session.NrÁ   Tr	  F)r  ÚresumedÚmissing_mediaÚreplay_commandsr  )r5   r)   Úopen_external_sessionr	  r  rê  rÔ   ræ   rÚ   r@   r<  Úvalidate_sessionÚload_sessionr§   Úclose_external_sessionÚbuild_replay_batch)r£   rõ   r  r  r  rØ   r  Úloadeds           rj   r  z%DeepyController.open_external_sessionq  s(  € å1°%Ñ8Ô8ˆÝ"Ô8¸ÑCÔCˆ
ØÔð 	_ð 	_ØÐ!Ø(-Ð(:°�Ô%ÝÔ,¨W°b¸$×:MÒ:MÑ:OÔ:OÕQ^ÔQqÐsw÷  tMò  tMð  NUñ  tVô  tVð  eið  u~ð  ñ  ô  ð  Ý!/Ô!AÀ'Ñ!JÔ!JÐW\ÐoqÐrÐrð		_ð 	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð
ÝÔ.¨z¸4×;NÒ;NÑ;PÔ;PÑQÔQÐQÝ&Ô3°G¸ZÈ×I\ÒI\ÑI^ÔI^Ñ_Ô_��øÝð ð ð ÝÔ4°ZÑ@Ô@Ð@Øðøøøð ð .Ø(-�Ô%Ý+Ô>¸wÈÐO`ÔHaÑbÔbÐosð  GMð  N]ô  G^ð  _ð  _ð	_ð 	_ð 	_ð 	_ñ 	_ô 	_ð 	_ð 	_ð 	_ð 	_ð 	_ð 	_øøøð 	_ð 	_ð 	_ð 	_ð 	_ð 	_s+   «A-EÂ&AC6Ã5EÃ6 DÄ0EÅEÅEr  c                ó  — t          |¦  «        }|j        5  |j        }t          j        |¦  «         t          j        |¦  «         |                      |ddd¬¦  «         |                     d¦  «        p|                     d¦  «        }|€>|d         |d         c|_        |_	        t          j        |¦  «        dd	œcddd¦  «         S t          j        |||                      ¦   «         ¦  «        }d|v rDt          j        |d¬
¦  «         t          j        |¦  «         t          j        |d         ¦  «         |d         |d         c|_        |_	        t          j        ||d         ¦  «        dd	œcddd¦  «         S # 1 swxY w Y   dS )z_Save and close the plugin session, then reload the conversation set aside by park_conversation.Tr  r  r  Nr  r  F)r  Úprefillr  r  r  )r5   r	  rî   r)   r  r  r  r�   r  r  r@   r<  r  rÔ   ÚshutilÚrmtreer  )r£   rõ   r  rØ   Ú	plugin_idr  r  s          rj   Úunpark_conversationz#DeepyController.unpark_conversation„  s  € å1°%Ñ8Ô8ˆØÔð 	uð 	uØÔ2ˆIÝÔ+¨GÑ4Ô4Ð4ÝÔ0°Ñ;Ô;Ð;Ø×Ò˜e TÀDÐ^bÐÑcÔcÐcØŸš LÑ1Ô1ÐL°V·Z²ZÀÑ5LÔ5LˆJØÐ!ØHNÐO`ÔHaÐcið  kAô  dBÐE�Ô'¨Ô)EÝ!/Ô!AÀ'Ñ!JÔ!JÐW\Ð]Ð]ð	uð 	uð 	uð 	uñ 	uô 	uð 	uð 	uõ #Ô/°¸ÀT×EXÒEXÑEZÔEZÑ[Ô[ˆFØ˜fÐ$Ð$åÔ/°ÀeÐLÑLÔLÐLÝÔ4°ZÑ@Ô@Ð@Ý”˜f \Ô2Ñ3Ô3Ð3ØDJÐK\ÔD]Ð_eÐf|Ô_}ÐAˆGÔ# WÔ%AÝ+Ô>¸wÈÐO`ÔHaÑbÔbÐosÐtÐtð!	uð 	uð 	uð 	uñ 	uô 	uð 	uð 	uð 	uð 	uð 	uð 	uøøøð 	uð 	uð 	uð 	uð 	uð 	us   —B&E?Ã
B(E?Å?FÆF)Úreplay_pendingr%  c          
     óì  — t          |¦  «        }|j        5  d}|j        rù|j        ròt	          t          |                      ¦   «         d¦  «        ¦  «        sÃd
d„}|                      |||¬¦  «        }|                      ||¦  «        \  }}|j	        €dnt          |j	        d         ¦  «        }	|                      |||||||	¬¦  «        }
t          |                      ¦   «         ¬¦  «        5  |
                     ¦   «         }d d d ¦  «         n# 1 swxY w Y   nd	|_        t          j        |¦  «         |r|j	        �|                      |¦  «        nd }|r||fn|cd d d ¦  «         S # 1 swxY w Y   d S )Nr   rJ   c                ó   — d S r¶   r‹   )rh   Ú_datas     rj   rz  zBDeepyController.prefill_restored_session_context.<locals>.<lambda>ž  s   € °D€ rl   r(  Trˆ  )rˆ  r¬   rÁ   r¶   )r5   r	  rŸ  ÚmessagesrE   rF   rœ   r5  r‹  rø  r°   r–  r*   r³   Úprefill_restored_contextr)   rð   rú  )r£   rõ   r%  rØ   Úprefill_tokensr  r+  r‡  rˆ  rˆ  r;  Úreplay_streams               rj   Ú prefill_restored_session_contextz0DeepyController.prefill_restored_session_context™  s�  € Ý1°%Ñ8Ô8ˆØÔð 	Yð 	YØˆNØÔ,ð 	3°Ô1Að 	3ÕJZÕ[nÐos÷  pCò  pCñ  pEô  pEð  GNñ  \Oô  \Oñ  KPô  KPð 	3Ø8Ð8Ð8�Ø×)Ò)¨%°À7Ð)ÑKÔK�Ø:>×:[Ò:[Ð\cÐejÑ:kÔ:kÑ7�Ð7Ø+2Ô+HÐ+P 4 4ÕVZÐ[bÔ[xð  zLô  \Mñ  WNô  WNÐ Ø ×4Ò4°U¸GÀUÈHÐVcÐe}ð  QaÐ4ñ  bô  b�	Ý$°T×5MÒ5MÑ5OÔ5OÐPÑPÔPð Jð JØ%.×%GÒ%GÑ%IÔ%I�NðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jøð 13�Ô-ÝÔ+¨GÑ4Ô4Ð4ØBPð  IÐU\ÔUrÐU~˜D×7Ò7¸Ñ>Ô>Ð>ð  EIˆMØ6DÐX�N MÐ2Ð2È.ð	Yð 	Yð 	Yð 	Yñ 	Yô 	Yð 	Yð 	Yð 	Yð 	Yð 	Yð 	Yøøøð 	Yð 	Yð 	Yð 	Yð 	Yð 	Ys7   —CE)Ã-DÄE)ÄD	ÄE)ÄD	ÄAE)Å)E-Å0E-)Údefer_context_prefillr    r  r.  c          	     ó¢  — | j         st          j        d¦  «        ‚t          |¦  «        }t	          |pd¦  «                             ¦   «         }|st          j        d¦  «        ‚|j        |k    r.|j        t          j	        k    r|j
                             ¦   «          |j        |k    r®|�|                     ¦   «          |j        5  t          |j        ¦  «        }|j        d u}|j        rt%          j        ||j        ¦  «        nt%          j        |¦  «        }|s|sdn|                      |¦  «        }	||d|	g |o||dœcd d d ¦  «         S # 1 swxY w Y   t          j        ||                      ¦   «         ¦  «        }
|�(|                     |
                     d¦  «        ¦  «         |                      |¦  «         |j        5  |j        rt          j        |¦  «         t          j        |d¬¦  «         |                      |d	d	d	¬
¦  «         	 t          j        |||                      ¦   «         ¦  «        }n%# t>          $ r t          j        |d¬¦  «         ‚ w xY wddl m!} |�| "                    |j#        ¦  «         |�'| $                    | %                    ¦   «         ¦  «        n|  &                    ¦   «         }tO          j(        | ||¦  «        ¦  «         t          j)        || j*         +                    |¦  «        ¦  «        }d„ tY          |d                              dg ¦  «        pg ¦  «        D ¦   «         }|                      ¦   «         tZ          k    rGt]          t_          |  &                    ¦   «                              t`          i ¦  «        ¦  «        ¦  «        nt]          ¦   «         }d„ tc          ||z
  ¦  «        D ¦   «         }| 2                    d„ |d         D ¦   «         ¦  «         |rdn|                      |¦  «        }	t%          j        ||d         ¦  «        ||d         |	|||j        d udœcd d d ¦  «         S # 1 swxY w Y   d S )NzLEnable multi-session mode and restart WanGP before resuming a saved session.rÁ   zSelect a saved Deepy session.r   )r  Ú	active_idÚinjectedr+  ÚwarningsÚcontext_prefill_pendingÚaction_replay_pendingr  Fr  Tr  rb  c                ó~   — h | ]:}t          |t          ¦  «        ¯t          |                     d d¦  «        ¦  «        ’Œ;S )rÌ   rÁ   )r`   r#  rU   r�   rÓ  s     rj   ú	<setcomp>z7DeepyController.resume_saved_session.<locals>.<setcomp>Ò  si   € ð  Sð  Sð  S°tõ  |Fð  GKõ  MQñ  |Rô  |Rð  S�˜TŸXšX f¨bÑ1Ô1Ñ2Ô2ð  Sð  Sð  Srl   ÚenvironmentrÓ   c                ó   — g | ]}d |› �‘ŒS )zMissing configured MCP server: r‹   )rÎ   rÌ   s     rj   rÐ   z8DeepyController.resume_saved_session.<locals>.<listcomp>Ô  s!   € ÐmÐmÐmÀTÐ@¸$Ð@Ð@ÐmÐmÐmrl   c              3  ó    K  — | ]	}d |› �V — Œ
dS )zMissing media: Nr‹   )rÎ   Úpaths     rj   r/  z7DeepyController.resume_saved_session.<locals>.<genexpr>Õ  s+   è è € ÐYÐY¸Ð4¨dÐ4Ð4ÐYÐYÐYÐYÐYÐYrl   r  r  r1  )3rŸ   r¼   rh  r5   rU   rÂ   rî   r  r)   rä   r›  rœ  rð  r	  r°   rŸ  rø  Úui_replay_commandsr@   r  r2  r-  r  rÔ   Úvalidate_session_workspacer�   r  r
  r  r  r  r§   rg  rc  Úrestore_session_workspacer  ri  rh  rœ   r(   Úsync_context_media_pathsÚinject_session_mediar—   r�   rÕ   r   r¤  r   r   ÚsortedÚextend)r£   rõ   r  r.  r    rØ   r3  r4  r  r+  Úmanifestr  rc  rÏ   rì   Ú	saved_mcpÚcurrent_mcpr2  s                     rj   Úresume_saved_sessionz$DeepyController.resume_saved_session«  sî  € ØÔ*ð 	kÝ”(ÐiÑjÔjÐjÝ1°%Ñ8Ô8ˆÝ˜Ð) rÑ*Ô*×0Ò0Ñ2Ô2ˆ
Øð 	<Ý”(Ð:Ñ;Ô;Ð;ØÔ%¨Ò3Ð3¸Ô8RÕVcÔVrÒ8rÐ8rØÔ%×*Ò*Ñ,Ô,Ð,ØÔ%¨Ò3Ð3ØÐ)Ø×7Ò7Ñ9Ô9Ð9ØÔ"ð @ð @Ý*.¨wÔ/LÑ*MÔ*MÐ'Ø(/Ô(EÈTÐ(QÐ%ØbiÔb|ð  k�Ô9¸'À7ÔC]Ñ^Ô^Ð^õ  CQô  Cbð  cjñ  Ckô  Ck�Ø&;ð  "MÐCZð  "M  Ð`d÷  aFò  aFð  GLñ  aMô  aM�Ø!&°ZÈQÐbpð  Að  ^uð  ^Oð  zOð  jð  @ð  @ð@ð @ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @õ !Ô1°*¸d×>QÒ>QÑ>SÔ>SÑTÔTˆØÐ%Ø×5Ò5°h·l²lÐCYÑ6ZÔ6ZÑ[Ô[Ð[Ø×$Ò$ WÑ-Ô-Ð-ØÔð 	Lð 	LØÔ)ð 5ÝÔ+¨GÑ4Ô4Ð4ÝÔ+¨GÀ%ÐHÑHÔHÐHØ×Ò˜e TÀDÐ^bÐÑcÔcÐcðÝ&Ô3°G¸ZÈ×I\ÒI\ÑI^ÔI^Ñ_Ô_��øÝð ð ð ÝÔ/°ÀeÐLÑLÔLÐLØðøøøð IÐHÐHÐHÐHÐHàÐ)Ø×8Ò8¸Ô9UÑVÔVÐVØdrÐd~�^×;Ò;¸N×<]Ò<]Ñ<_Ô<_Ñ`Ô`Ð`ð  EI÷  EXò  EXñ  EZô  EZˆFÝÔ3°GÐ=UÐ=UÐV\Ñ=]Ô=]Ñ^Ô^Ð^Ý#Ô8¸À$Ä*×BYÒBYÐZ_ÑB`ÔB`ÑaÔaˆGð Sð  S½tÀFÈ=ÔDY×D]ÒD]Ð^kÐmoÑDpÔDpÐDvÐtvÑ?wÔ?wð  Sñ  Sô  SˆIð AE÷  ATò  ATñ  AVô  AVõ  Zjò  Ajð  Aj�#Õ?À×@SÒ@SÑ@UÔ@U×@YÒ@YÕZuÐwyÑ@zÔ@zÑ{Ô{Ñ|Ô|Ð|õ  psñ  puô  puˆKØmÐmÍVÐT]Ð`kÑTkÑMlÔMlÐmÑmÔmˆHØ�OŠOÐYÐYÀÈÔAXÐYÑYÔYÑYÔYÐYØ"7Ði˜Q˜Q¸T×=bÒ=bÐchÑ=iÔ=iˆNÝ+Ô>¸wÈÐO`ÔHaÑbÔbÐq{ð  JQð  R\ô  J]ð  qð  MUð  rGð  biô  bð  GKð  bKð  Lð  Lð-	Lð 	Lð 	Lð 	Lñ 	Lô 	Lð 	Lð 	Lð 	Lð 	Lð 	Lð 	Løøøð 	Lð 	Lð 	Lð 	Lð 	Lð 	Ls?   ÃA9EÅEÅEÇAQÈ(H8È7QÈ8"IÉGQÑQÑQc                óà   — t          |¦  «        }| j        5  t          j        |||¬¦  «        }d d d ¦  «         n# 1 swxY w Y   | j        �!| j                             ||d         ¦  «         |S )N©r  r  )r5   r›   r)   Úrename_stored_sessionr    Úrename_session_workspace)r£   rõ   r  r  rØ   Úresults         rj   Úrename_saved_sessionz$DeepyController.rename_saved_sessionÙ  sÁ   € Ý1°%Ñ8Ô8ˆØÔ#ð 	dð 	dÝ"Ô8¸ÀUÐ[bÐcÑcÔcˆFð	dð 	dð 	dñ 	dô 	dð 	dð 	dð 	dð 	dð 	dð 	døøøð 	dð 	dð 	dð 	dàÔÐ*ØÔ×8Ò8¸ÀVÈGÄ_ÑUÔUÐUØˆs   —;»?Á?c                óL   — t          |¦  «        }t          j        ||¬¦  «        S ©NrG  )r5   r)   Úduplicate_stored_session©r£   rõ   r  rØ   s       rj   Úduplicate_saved_sessionz'DeepyController.duplicate_saved_sessioná  s&   € Ý1°%Ñ8Ô8ˆÝÔ5°jÐQXÐYÑYÔYÐYrl   c                óf   — t          |¦  «        }t          t          j        ||¬¦  «        ¦  «        S rM  )r5   rU   r)   Úexport_stored_sessionrO  s       rj   Úexport_saved_sessionz$DeepyController.export_saved_sessionå  s.   € Ý1°%Ñ8Ô8ˆÝ•=Ô6°zÐRYÐZÑZÔZÑ[Ô[Ð[rl   Úarchive_pathc                ó*   — t          j        |¦  «        S r¶   )r)   Úimport_session)r£   rT  s     rj   Úimport_saved_sessionz$DeepyController.import_saved_sessioné  s   € ÝÔ+¨LÑ9Ô9Ð9rl   c                ó  — t          |¦  «        }t          |pd¦  «                             ¦   «         }|j        r|j        |k    rt          j        d¦  «        ‚|j        |k    }|r,t          j        |¦  «         |  	                    |dd¬¦  «         t          j
        ||¬¦  «        }|rt          j        |d¬¦  «         | j        �| j                             |¦  «         |rt          j        |¦  «        nd t          |¦  «        |j        dœS )	NrÁ   z.Stop Deepy before deleting its active session.T)r  rG  Fr  )r  Ú
trash_pathr0  )r5   rU   rÂ   rï   rî   r¼   rh  r)   r
  r  Údelete_sessionr  r    Údelete_session_workspacer@   r<  )r£   rõ   r  rØ   ÚactiveÚdestinations         rj   Údelete_saved_sessionz$DeepyController.delete_saved_sessionì  s2  € Ý1°%Ñ8Ô8ˆÝ˜Ð) rÑ*Ô*×0Ò0Ñ2Ô2ˆ
ØÔ ð 	M WÔ%?À:Ò%MÐ%MÝ”(ÐKÑLÔLÐLØÔ+¨zÒ9ˆØð 	JÝÔ'¨Ñ0Ô0Ð0Ø×Ò˜e TÀDÐÑIÔIÐIÝ#Ô2°:ÈgÐVÑVÔVˆØð 	IÝÔ+¨GÀ%ÐHÑHÔHÐHØÔÐ*ØÔ×8Ò8¸ÑDÔDÐDØFLÐV�Ô9¸'ÑBÔBÐBÐRVÕfiÐjuÑfvÔfvð  FMô  F`ð  að  að  	arl   c                óÒ  — t          |pd¦  «                             ¦   «         }|t          j        k    r|                      |¦  «        S |r|                      ||¦  «        S t          |¦  «        }| j        5  |j        }|j	        }|r0|s.|j
        5  t          |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |rê|r|                      |¦  «        nd}|rKt          j        |¦  «        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS |                      |d¦  «        }|                      d|pd› �¦  «         |rdnd}	t          j        |	d|¬¦  «        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS |                      |¦  «        }|rMt          j        |¦  «        }
|
t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS )	NrÁ   ÚStopz7Stop requested worker_active=True active_prime_mcp_job=ÚnonezStopping generation...z*Interrupting the current assistant task...Ústop_pendingr'  )rU   rÂ   r@   ÚPAUSE_TOGGLE_ACTIONÚ_toggle_pause_airR  r5   r›   rï   r¢  r	  r8   r2  r2  r¼   rç   rZ  r¯   r4  )r£   rõ   Úqueued_actionÚnormalized_actionrØ   rï   r¢  Úcancelled_user_textÚcancelled_job_idr=  rP  s              rj   Ústop_aizDeepyController.stop_aiü  sÙ  € Ý Ð 3°Ñ4Ô4×:Ò:Ñ<Ô<ÐØ¥Ô BÒBÐBØ×(Ò(¨Ñ/Ô/Ð/Øð 	KØ×4Ò4°U¸MÑJÔJÐJÝ1°%Ñ8Ô8ˆØÔ#ð 	9ð 	9Ø#Ô1ˆMØ")Ô"=ÐØð 9Ð%8ð 9ØÔ&ð 9ð 9Ý/°Ñ8Ô8Ð8ð9ð 9ð 9ñ 9ô 9ð 9ð 9ð 9ð 9ð 9ð 9øøøð 9ð 9ð 9ð 9ð		9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ð 	OØObÐ"j $×"BÒ"BÀ7Ñ"KÔ"KÐ"KÐhjÐØ"ð gÝ%Ô6°wÑ?Ô?ÅÄÁÄÍbÌiÉkÌkÕ[]Ô[dÑ[fÔ[fÐfÐfØ#×<Ò<¸WÀfÑMÔMÐØ�OŠOÐrÐVfÐVpÐjpÐrÐrÑsÔsÐsØ6FÐxÐ2Ð2ÐLxˆKÝ!Ô4°[À~Ð_fÐgÑgÔgÕikÔirÑitÔitÕvxÔvñ  wBô  wBõ  DFô  DMñ  DOô  DOð  Oð  OØ"×>Ò>¸wÑGÔGÐØð 	EÝ'Ô8¸ÑAÔAˆJØ�rœy™{œ{­B¬I©K¬K½¼¹¼ÐDÐDÝŒy‰{Œ{�BœI™KœK­¬©¬µb´i±k´kÐAÐAs6   Á7CÂB-Â!CÂ-B1	Â1CÂ4B1	Â5CÃCÃCc           
     ó°  — t          |¦  «        }| j        5  |j        rt          |¦  «        }ddddœ}d}n)|j        rd}ddddœ}d	}nt          |¦  «        }ddddœ}d
}d d d ¦  «         n# 1 swxY w Y   |sP|d	k    rJt          j        ¦   «         t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS |                      d|› dt          |j
        ¦  «        › dt          |j        ¦  «        › �¦  «         t          j        ||¬¦  «        t          j        ¦   «         t          j        ¦   «         t          j        ¦   «         fS )NTÚresumingzResuming Deepy...r   ÚresumeFÚpause_pendingzPausing Deepy...zpause-pendingÚpausezDeepy z requested worker_active=z tool_active=r#  )r5   r›   Úpausedr<   Úpause_requestedr9   r¼   rç   r¯   r°   rï   rØ  r@   r2  )r£   rõ   rØ   Úchangedr±  r4  s         rj   rd  z DeepyController._toggle_pause_ai  sÆ  € Ý1°%Ñ8Ô8ˆØÔ#ð 	!ð 	!ØŒ~ð !Ý*¨7Ñ3Ô3�Ø%)°:ÐGZÐ[Ð[�Ø!��ØÔ(ð !Ø�Ø%)°?ÐL^Ð_Ð_�Ø(��å1°'Ñ:Ô:�Ø%)°?ÐL^Ð_Ð_�Ø �ð	!ð 	!ð 	!ñ 	!ô 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!øøøð 	!ð 	!ð 	!ð 	!ð ð 	F˜6 _Ò4Ð4Ý”9‘;”;¥¤	¡¤­R¬Y©[¬[½"¼)¹+¼+ÐEÐEØ�Šð  T ð  Tð  TÅ$ÀwÔG\ÑB]ÔB]ð  Tð  TÕlpÐqxô  rQñ  mRô  mRð  Tð  Tñ  	Uô  	Uð  	UÝÔ.¨w¸vÐFÑFÔFÍÌ	ÉÌÕUWÔU^ÑU`ÔU`ÕbdÔbkÑbmÔbmÐmÐms   —A	A,Á,A0Á3A0c                ó¶  — t          |¦  «        }| j        rt          j        nt          j        }|j        rº||_        |t          j        k    rdnd}t          d|                     ¦   «         › d�¦  «         t          |¦  «         d|_
        |t          j        k    rdnd}t          j        |d|¬	¦  «        t          j        ¦   «         t          j        d¬
¦  «        t          j        ¦   «         fS |                      |||¦  «         d|_
        t          j        |¦  «        t          j        ¦   «         t          j        d¬
¦  «        t          j        ¦   «         fS )Nznew sessionr	  z[Assistant] zM requested during an active turn; it will apply after the current work stops.rÁ   r  z,Resetting after the current tool finishes...r   r'  ró  )r5   rŸ   r)   rä   rå   rï   r  r®   r  r;   r  r@   r4  r¼   rç   r  r<  )r£   rõ   rÝ   rØ   r4  r=  s         rj   Úreset_aizDeepyController.reset_ai+  sy  € Ý1°%Ñ8Ô8ˆØ59Ô5PÐt•]Ô1Ð1ÕVcÔVtˆ
ØÔ ð 	QØ)3ˆGÔ&Ø&0µMÔ4PÒ&PÐ&P�]�]ÐV]ˆFÝÐ~ §¢¡¤Ð~Ð~Ð~ÑÔÐÝ# GÑ,Ô,Ð,Ø "ˆGÔØYcÕgtô  hDò  ZDð  ZDÐUÐUð  JxˆKÝ!Ô4°[ÀxÐY`ÐaÑaÔaÕceÔclÑcnÔcnÕprÔpyð  ACð  qDñ  qDô  qDõ  FHô  FOñ  FQô  FQð  Qð  QØ×$Ò$ U¨G°ZÑ@Ô@Ð@ØˆÔÝÔ/°Ñ8Ô8½"¼)¹+¼+ÅrÄyÐWYÐGZÑGZÔGZÕ\^Ô\eÑ\gÔ\gÐgÐgrl   c                óh  — t          |¦  «        }|                      |¦  «        rMt          j        |¦  «        t	          j        ¦   «         t	          j        d¬¦  «        t	          j        ¦   «         fS |j        sU|j        dk    rJt	          j        ¦   «         t	          j        ¦   «         t	          j        ¦   «         t	          j        ¦   «         fS t          |¦  «         d|_	        t          j
        dd|¬¦  «        t	          j        ¦   «         t	          j        d¬¦  «        t	          j        ¦   «         fS )NrÁ   ró  r   rÈ  r   r'  )r5   r  r@   r<  r¼   rç   rï   r*  r;   r  r4  r  s      rj   Úbrowser_session_startedz'DeepyController.browser_session_started:  s:  € Ý1°%Ñ8Ô8ˆØ×-Ò-¨gÑ6Ô6ð 	lÝ!Ô3°GÑ<Ô<½b¼i¹k¼kÍ2Ì9Ð[]ÐK^ÑK^ÔK^Õ`bÔ`iÑ`kÔ`kÐkÐkØÔ$ð 	F¨Ô)AÀQÒ)FÐ)FÝ”9‘;”;¥¤	¡¤­R¬Y©[¬[½"¼)¹+¼+ÐEÐEÝ Ñ(Ô(Ð(ØˆÔÝÔ0Ð1\ÐckÐu|Ð}Ñ}Ô}õ  @Bô  @Iñ  @Kô  @Kõ  MOô  MVð  ]_ð  M`ñ  M`ô  M`õ  bdô  bkñ  bmô  bmð  mð  	mrl   )r•   ro   )rV   r¥   )r©   rU   rV   rŒ   )rV   r°   )rV   r´   )r·   r´   rV   rŒ   )r¾   r´   rV   rŒ   )rÄ   r°   rV   rŒ   )rÝ   rU   rV   rŒ   )rV   rU   )r4  rU   rV   rU   )rd  r˜  )NN)rp  rU   rq  rr  rs  rr  rV   r´   )rV   rw   )FFF)r5  rU   rV   rÏ  )rà  r   rV   rÏ  )rà  rU   rV   rŒ   )rà  rU   )rà  rU   rú  r¥   r   r°   rõ  rU   rö  rU   r÷  rû  rø  rü  rù  rU   r¶   )rV   rs  )r‡  rU   rˆ  rU   rˆ  r°   rV   r,   )rd  NNN)r÷  rû  rV   rŒ   )rÁ   F)rõ  rU   r½  r°   )rõ  rU   r½  r°   rø  rü  rù  rU   )rÁ   )rõ  rU   )rV   rû  )r  r  r  rU   rV   r´   )r  r´   rV   r´   )r%  r°   )r  rU   r.  r°   rV   r´   )r  rU   r  rU   rV   r´   )r  rU   rV   r´   )r  rU   rV   rU   )rT  rU   rV   r´   )Ar‡   rˆ   r‰   r¤   rr   r¯   r³   rœ   r¿   r»   rÇ   rÚ   ré   rû   rý   rÿ   r  r  Ústaticmethodr'  r2  rR  rZ  r\  r`  rb  rÔ   rk  ro  r”  r�  r  rÁ  rÎ  rß  ræ  rí  ró  rX  r_  r5  r‹  r–  r6  rÃ  rÂ  rô  rú  rþ  r  r  r  r  r$  r-  rE  rK  rP  rS  rW  r^  ri  rd  rs  ru  r‹   rl   rj   r”   r”   ‡   sX  € € € € € ð	%ð 	%ð 	%ð 	%ðð ð ð ð:ð :ð :ð :ð
ð ð ð ð4ð 4ð 4ð 4ð+ð +ð +ð +ðDð Dð Dð Dð5ð 5ð 5ð 5ð
ð 
ð 
ð 
ðð ð ð ð kpð  ð  ð  ð  ð  ð  ðD+ð +ð +ð +ðCð Cð Cð Cðwð wð wð wð,ð ð ð ð ðð ð ñ „\ððð ð ð ð $Fð $Fð $FðLð ð ð ð6ð 6ð 6ð 6ðð ð ð ðið ið ið iðSð Sð Sð Sð<ð <ð <ð <ð-ð -ð -ð -ð
Hð Hð Hð Hð Hð<*ð *ð *ð *ð",ð ",ð ",ð ",ðHð ð ð ð ð> IMÐptð  OSð  aeð  rvð  ~Bð  KOð  \`ð  quð  |@ð  JOð ð ð ð ð ð* ðEð Eð Eñ „\ðEð$Vð Vð Vð VðDð Dð Dð Dð
+ð 
+ð 
+ð 
+ð XZð  suð  ^bð  IMð  ]bð g,ð g,ð g,ð g,ð g,ð g,ðRSð Sð Sð$ð $ð $ð $ðL7ð 7ð 7ð 7ð: ceð 
ð 
ð 
ð 
ð 
ð 
ð.*ð *ð *ð *ð *ðXXð Xð Xð Xð Xðð  QUð  ejð ð ð ð ð ð ðBWð Wð Wð Wð WðB1ð 1ð 1ð 1ðfBð Bð Bð Bð)ð )ð )ð )ðVð Vð Vð Vðð ð ð ð&_ð _ð _ð _ð&uð uð uð uð* QVð Yð Yð Yð Yð Yð Yð$ ]bÐrvð ,Lð ,Lð ,Lð ,Lð ,Lð ,Lð\ð ð ð ðZð Zð Zð Zð\ð \ð \ð \ð:ð :ð :ð :ðað að að að Bð Bð Bð Bð6nð nð nð(hð hð hð hðmð mð mð mð mrl   r”   c                 ó4   — t          t          di | ¤Ž¦  «        S )Nr‹   )r”   ro   )Údeps_kwargss    rj   Úcreate_controllerry  E  s   € Ý�9Ð3Ð3 {Ð3Ð3Ñ4Ô4Ð4rl   )rT   rU   rV   rU   r˜  )rV   r”   )sÚ
__future__r   r?  Úosr×  r¨  r!  r™   rZ   r7  Údataclassesr   Útypingr   r   Úgradior¼   Úshared.utils.config_storer   r   r«  r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   Úshared.deepyr%   r&   r'   r¹   r(   r)   Úshared.deepy.debug_bootstrapr*   Úshared.deepy.publicationr+   Úshared.deepy.enginer,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   Úshared.gradior@   Úshared.utils.thread_utilsrA   rB   rC   rD   Úshared.remote_llm.configrE   rF   Úshared.utils.process_locksrG   rH   rI   Ú_DEEPY_GPU_PROCESS_IDr^  rw  rx  ÚLockrŒ  r^   r\   ÚDEEPY_STREAM_TRACE_ENVrU   Úenvironr�   rÂ   r$  r  rk   ro   r’   r”   ry  r‹   rl   rj   ú<module>rŒ     sÙ  ðà "Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð< AÐ @Ð @Ð @Ð @Ð @Ð @Ð @Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð, )Ð (Ð (Ð (Ð (Ð (Ø hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hÐ hØ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nÐ nð  Ð ØDÐ Ø*SÑ 'Ð Ð'Ø#�Y”^Ñ%Ô%Ð ØÐ ØÐ Ø4Ð Ø!˜c "¤*§.¢.Ð1GÈÑ"MÔ"MÑNÔN×TÒTÑVÔV×\Ò\Ñ^Ô^ð  cBð  BÐ ð	6ð 	6ð 	6ð 	6ð €�ÐÑÔð-ð -ð -ð -ð -ñ -ô -ñ Ôð-ð2bð bð bð bð{mð {mð {mð {mð {mñ {mô {mð {mð|%5ð 5ð 5ð 5ð 5ð 5rl   