
    `gj                       U d Z ddlmZ ddlZddlZddlZddlmZmZm	Z	m
Z
 ddlZddlmZmZmZmZ  ej"                  e      Zi dddd	d
d	dddddddddddddddd	ddddddddddddddddddddddd
Zded <   h d!ZdLd"ZdMd#ZdNd$ZdOd%ZdPd&ZdQdRd'ZdSdTd(ZdUdVd)ZdWd*ZdXd+Z dWd,Z!dWd-Z"dYdZd/Z#dWd0Z$dXd1Z%dWd2Z&dWd3Z'dXd4Z(dWd5Z)dWd6Z*dXd7Z+d[d8Z,d[d9Z-d\d:Z.dd;d.d<	 	 	 	 	 	 	 	 	 	 	 d]d=Z/d>d?	 	 	 	 	 	 	 d^d@Z0	 	 	 	 	 	 	 	 d_dAZ1d`dBZ2dadCZ3dddD	 	 	 	 	 	 	 	 	 dbdEZ4ddF	 	 	 	 	 	 	 	 	 dcdGZ5ddF	 	 	 	 	 	 	 	 	 dcdHZ6dddIZ7	 	 	 de	 	 	 	 	 	 	 	 	 	 	 dfdJZ8	 	 	 	 dgdKZ9y)hzTACP tool-call helpers for mapping hermes tools to ACP ToolKind and building content.    )annotationsN)AnyDictListOptional)ToolCallLocationToolCallStartToolCallProgressToolKind	read_fileread
write_fileeditpatchsearch_filessearchterminalexecuteprocessexecute_codetodoother
skill_viewskills_listskill_manage
web_searchfetchweb_extractbrowser_navigatebrowser_clickbrowser_typebrowser_snapshotthink)
browser_visionbrowser_scrollbrowser_pressbrowser_backbrowser_get_imagesdelegate_taskvision_analyzeimage_generatetext_to_speech	_thinkingzDict[str, ToolKind]TOOL_KIND_MAP>7   r   r   memoryclarifycronjobdiscordr   r   r   r   r   r   
yb_send_dmkanban_linkkanban_showr   r   r'   r!   r   ha_get_statekanban_blockr   send_messager   r    r&   r)   discord_adminkanban_creater%   r$   r+   kanban_commentsession_searchr,   r*   browser_consolefeishu_doc_readha_call_servicekanban_completeyb_send_stickerr   r"   ha_list_entitiesha_list_serviceskanban_heartbeatyb_search_stickerr(   yb_query_group_infoyb_query_group_membersfeishu_drive_add_commentfeishu_drive_list_commentsfeishu_drive_reply_comment!feishu_drive_list_comment_repliesc                .    t         j                  | d      S )zAReturn the ACP ToolKind for a hermes tool, defaulting to 'other'.r   )r.   get)	tool_names    D/root/.hermes/venv/lib/python3.12/site-packages/acp_adapter/tools.pyget_tool_kindrP   T   s    Y00    c                 J    dt        j                         j                  dd  S )zGenerate a unique tool call ID.ztc-N   )uuiduuid4hex rQ   rO   make_tool_call_idrX   Y   s#    !!#2&'((rQ   c                   | dk(  r-|j                  dd      }t        |      dkD  r|dd dz   }d| S | d	k(  rd
|j                  dd       S | dk(  rd|j                  dd       S | dk(  r,|j                  dd      }|j                  dd      }d| d| S | dk(  rd|j                  dd       S | dk(  rd|j                  dd       S | dk(  r|j                  dg       }|rz|d   }t        |t              r)|j                  d      xs |j                  d      xs d}nt        |t              sd}d| t        |      d kD  rd!t        |      d z
   d"z   S dz   S y#| d$k(  rkt	        |j                  d%      xs d      j                         xs d&}t	        |j                  d'      xs d      j                         }|rd(| d)| S d(| S | d*k(  re|j                  d+      }	t        |	t              r|	rd,t        |	       d-S |j                  d.d      }
|
rt        |
      d/kD  r|
dd0 dz   }
|
rd1|
 S d2S | d3k(  r5t	        |j                  d      xs d      j                         }|rd4| S d5S | d6k(  rht	        |j                  d%      xs d&      j                         xs d&}t	        |j                  d7      xs d6      j                         xs d6}d8| d)| S | d9k(  rkt	        |j                  d:      xs d      j                         }t        d; |j                         D        d      }|rt        |      d<kD  r|dd= dz   }d>| S y?| d@k(  rG|j                  dA      }t        |t              r%dBt        |       dCt        |      d k7  rdD d"S d d"S y@| dEk(  rmt	        |j                  dF      xs d      j                         xs d}t	        |j                  dG      xs d      j                         }|rdH| nd}dI| | d"S | dJk(  r6t	        |j                  dK      xs d      j                         }|rdL| d"S dMS | dNk(  rt	        |j                  d%      xs d&      j                         xs d&}t	        |j                  dF      xs d      j                         xs d}t	        |j                  dG      xs d      j                         }|r| dH| n|}t        |      dOkD  r|ddP dz   }dQ| d)| S | dRk(  rdS|j                  dd       S | dTk(  ryU| dVk(  r!dWt	        |j                  dXd            ddY  S | dZk(  ry[| d\k(  r!d]t	        |j                  dXd            ddY  S | d^k(  rKt	        |j                  d_      xs |j                  d`      xs d      j                         }|rda|ddY  S dbS | dck(  r~t	        |j                  d%      xs d&      j                         xs d&}t	        |j                  dd      xs |j                  de      xs d      j                         }|rdf| d)| S df| S | S )gz-Build a human-readable title for a tool call.r   command P   NM   z...z
terminal: r   zread: path?r   zwrite: r   modereplacezpatch (z): r   zsearch: patternr   zweb search: queryr   urlsr   urlhrefz	extract:     (+)zweb extractr   actionmanage
session_idzprocess : r)   taskszdelegate batch (z tasks)goal<   9   z
delegate: zdelegate taskr<   zsession search: zrecent sessionsr/   targetzmemory r   codec              3  ^   K   | ]%  }|j                         s|j                          ' y wN)strip).0lines     rO   	<genexpr>z#build_tool_title.<locals>.<genexpr>   s     VD4::<Vs   --F   C   zpython: zpython coder   todosztodo ( itemsr   name	file_path/zskill view (r   categoryzskills list (zskills listr   @   =   zskill r   z
navigate: r"   zbrowser snapshotr$   zbrowser vision: question2   r(   zbrowser imagesr*   zanalyze image: r+   promptdescriptionzgenerate image: zgenerate imager1   job_ididzcron )	rM   len
isinstancedictstrrv   listnext
splitlines)rN   argscmdr`   r^   rd   firstrj   sidrn   ro   rc   rr   rs   
first_lineitemsr   r   suffixr   r   r   s                         rO   build_tool_titler   ^   s   Jhhy"%s8b=cr(U"CC5!!K-.//L &#./00Gxx	*xx$c$((N"$((9c2344L dhhw4566M!xx#GE%&		%(DEIIf,=Ds+ug&#d)a-CD	!}A*>XXUWXXITXXh'-2.446B($((<(.B/557-0&C5)I6IIO#!eT"u%c%j\99xx#CIN9u$D&*D6"??$$DHHW%+,224-2!%)I8IIHTXXh'384::<HTXXh'384::<H6(++N"488F#)r*002VDOO4EVXZ[
:#'_u4
j\**F!eT"CJ<uCJ!OS,LANN,LANNL 488F#*s+113:s-34::<	$-1YK2dVF81--M!txx
+1r288:.6xj*IMIN"TXXh'384::<H488F#*s+113:s-34::<	*3D69+&v;CR[5(Fxr&**&&DHHUC0122&&!$$!#dhhz3&?"@""E!FGG(($$ TXXj#%>!?!D EFF$$TXXh'H488M+BHbIOOQ39!&"+/O?OOITXXh'384::<HTXXh'?488D>?R@FFH-3vhb)I59IIrQ   c                R    t        j                  t        j                  |             S ru   )acptool_content
text_block)contents    rO   _textr      s    CNN7344rQ   c                    t        | t              s| S 	 t        j                  |       S # t        $ r Y nw xY w	 t        j
                         j                  | j                               \  }}|S # t        $ r Y y w xY wru   )r   r   jsonloads	ExceptionJSONDecoder
raw_decodelstrip)valuedecoded_s      rO   _json_loads_mayber      sv    eS!zz%   %%'225<<>B
 s   ) 	555A/ /	A;:A;c                |   t        | t              r| j                  d      ryt        |       }t        |t              sydD ]  }|j                  |      du s y |j                  d|j                  d            }t        |t              r|dk7  ry|t        v r#|j                  d      r|j                  d	      syy)
a&  Return True when a structured Hermes tool result clearly failed.

    Keep this deliberately conservative. Plain text can contain words like
    "error" because tests failed or a command printed diagnostics; Zed should
    only receive ACP failed status for structured tool-level failures.
    zError executing tool 'TF)successok	exit_code
returncoder   errorr   )r   r   
startswithr   r   rM   int_POLISHED_TOOLS)resultrN   datakeyr   s        rO   _tool_result_failedr      s     &#6#4#45M#NV$DdD!  88C=E! dhh|&<=I)S!i1n O#(9$((9BUrQ   c                f    t        |       |k  r| S | d t        d|dz
         dt        |        dz   S )Nr   d   
... ( chars total, truncated))r   max)textlimits     rO   _truncate_textr      s?    
4yE%#a%&73t9+=U)VVVrQ   c                    t        d | j                  d      ddd   D        d      }dt        d|dz         z  }| | d	|  d	| S )
zCReturn a Markdown fence that cannot be broken by backticks in text.c              3  2   K   | ]  }t        |        y wru   )r   )rw   runs     rO   ry   z_fenced_text.<locals>.<genexpr>  s     =3s8=s   `rg   N   r   )default   
)r   split)r   languagelongestfences       rO   _fenced_textr     sW    =tzz#qt!t'<=qIG#a1%%EWXJbb00rQ   c                0   t        |       }t        |t              rt        |j                  d      t              sy t        |j                  d      t              r|j                  d      ni }ddddd}dd	g}|d   D ]  }t        |t              st        |j                  d
      xs d      }t        |j                  d      xs |j                  d      xs d	      j                         }|st|j                  d|j                  |d       d|         |rj|j                  dd      }|j                  d	d|j                  dd       d|j                  dd       d|j                  dd       d|rd| dnd	z   g       dj                  |      S )Nr|   summary   ✅u   🔄u   ⏳   ✗)	completedin_progresspending	cancelledz**Todo list**r[   statusr   r   r   -    • r   r   z**Progress:** r   z completed, r   z in progress, z pending, z
 cancelledr   )
r   r   r   rM   r   r   rv   appendextendjoin)	r   r   r   iconlinesitemr   r   r   s	            rO   _format_todo_resultr     s   V$DdD!DHHW4Et)L%/0CT%Jdhhy!PRG	D b!EW C$%TXXh'495dhhy)ATXXd^ArBHHJLL2dhhvu56ayABC KKQ/	{{;*+<{{=!,-^{{9a()3 .7I;j)B	@
 	 99UrQ   c                   t        |       }t        |t              sy |j                  d      r%|j                  d      sd|j                  d       S |j                  d      }t        |t              sy t	        |xs i j                  d      xs |j                  d      xs d      j                         }|xs i j                  d      }|xs i j                  d      }g }|r|j                  d|        |r|j                  d	|        |rd
dj                  |       dnd}d| | }	|j                  d      |	d|j                  d       dz  }	t        |	 dt        |             S )Nr   r   zRead failed: r^   fileoffsetr   z
from line zlimit  (r   ri   r[   zRead total_lines    — z total linesz

)
r   r   r   rM   r   rv   r   r   r   r   )
r   r   r   r   r^   r   r   
range_bitsr   headers
             rO   _format_read_file_resultr   (  sj   V$DdD!xx)!4txx0122hhy!Ggs#
'E488F+;EvFLLNDjbh'FZRW%EJJvh/0F5'*+.8r$))J'(*bFTF6(#Fxx*E$((=12,?? VHDg)>(?@AArQ   c                   t        |       }t        |t              sy |j                  d      }t        |t              r|j                  dt        |            }t        t        |      d      }t        |j                  d            xs t        |      |kD  }dd| d|dk7  rd	nd
 d| dd
g}|d | D ]  }|j                  d|         |r|j                  d
dg       t        dj                  |      d      S |j                  d      }t        |t              sy |j                  dt        |            }t        t        |      d      }t        |j                  d            xs t        |      |kD  }dd| d|dk7  rdnd
 d| dd
g}|d | D ].  }	t        |	t              s|j                  d|	        )t        |	j                  d      xs( |	j                  d      xs |	j                  d      xs d      }|	j                  d      xs |	j                  d      }
t        |	j                  d      xs |	j                  d      xs d
      j                         }|
r| d|
 n|}|j                  d|        |st        d j                  |j                               d!      }|j                  d"|        1 |r|j                  d
d#g       t        dj                  |      d      S )$Nfilestotal_count   	truncatedzFile search resultszFound z filerg   r~   r[   z
; showing .r   zPResults truncated. Narrow the search, add path/file_glob, or use offset to page.r   X  r   matchesrS   zSearch resultsz matchesr^   r   filenamer_   rx   line_numberr   r   :r   ,    zKResults truncated. Narrow the search, add file_glob, or use offset to page.)r   r   r   rM   r   r   minboolr   r   r   r   r   rv   r   )r   r   r   totalshownr   r   r^   r   matchrx   r   locsnippets                 rO   _format_search_files_resultr   C  s   V$DdD!HHWE%E
3CJ#+./E3u:3E	!UG5
 ;:eWAN

 &5M 	&DLL2dV%	&LLb  dii.d;;hhy!Ggt$HH]CL1EGb!ETXXk*+Cs7|e/CI
veqjdb9E7!L
E % )%&LL2eW&599V$Y		&(9YUYYz=RYVYZyy <EIIm$<eii	*Eeii.?E2FLLN"&avDr#Z $SXXgmmo%>DGLL2gY() Y
 	 $))E*$77rQ   c           
     X   t        |       }t        |t              s$t        | t              r| j	                         r| S d S t        |j                  d      xs d      }t        |j                  d      xs d      }|j                  d      }|d| ndg}|j                  d      r||j                  d      }|j                  d	      }|j                  d
      }t        d |||fD              r!|j                  dd|dd|dd|ddg       n|j                  ddg       t        |j                  d      xs d      j	                         }	|	r|j                  dd|	g       |r|j                  dd|g       |r|j                  dd|g       t        dj                  |            S )Noutputr[   r   r   zExit code: zExecution completestdout_truncatedstdout_bytes_totalstdout_bytes_capturedstdout_bytes_omittedc              3  <   K   | ]  }t        |t                y wru   )r   r   rw   vs     rO   ry   z._format_execute_code_result.<locals>.<genexpr>  s     Faz!S!Fs   zOutput truncated: captured ,z of z bytes (z
 omitted).zOutput truncated.warningzWarning:Output:Error:r   )
r   r   r   r   rv   rM   allr   r   r   )
r   r   r  r   r   partsr   capturedomittedr  s
             rO   _format_execute_code_resultr  ~  s   V$DdD!#FC0V\\^vMM(#)r*F!'R(E%I*3*?{9+&EYZExx"#-.8834((12FHeW+EFFLL  (|4ay 9{*.  LL"123$((9%+,224Gb*g./b)V,-b(E*+$))E*++rQ      c                    g }| j                         D ]f  }|j                         }|j                  d      r2|j                  d      j                         }|r|j	                  |       t        |      |k\  se |S  |S )N#)r   rv   r   r   r   r   )r   r   headingsrx   strippedheadings         rO   _extract_markdown_headingsr    sy    H""$ ::<s#ooc*002G(x=E!O OrQ   c                   t        |       }t        |t              sy |j                  d      du rd|j                  dd       S t	        |j                  d      xs d      }t	        |j                  d      xs |j                  d	      xs d
      }t	        |j                  d      xs d      j                         }t	        |j                  d      xs d      }t        |j                  d      t              r|j                  d      nd }ddd| dd| dg}|r|j                  d|        |r|j                  dt        |      dd       |r4t        d |j                         D              }|j                  d|        t        |      }	|	r+|j                  ddg       |j                  d |	D               |j                  ddg       dj                  |      S )Nr   FzSkill view failed: r   unknown errorr   skillr   r^   SKILL.mdr   r[   r   linked_filesz**Skill loaded**z- **Name:** `r   - **File:** `z- **Description:** z- **Content:** r
  z  chars loaded into agent contextc              3  T   K   | ]   }t        |t              st        |       " y wru   )r   r   r   r  s     rO   ry   z,_format_skill_view_result.<locals>.<genexpr>  s     RajD>Q3q6Rs   ((z- **Linked files:** z**Sections**c              3  &   K   | ]	  }d |   yw)r   NrW   )rw   r  s     rO   ry   z,_format_skill_view_result.<locals>.<genexpr>  s     <r'^<s   zT_Full skill content is available to the agent but hidden here to keep ACP readable._r   )r   r   r   rM   r   rv   r   r   sumvaluesr  r   r   )
r   r   r   r   r   r   linkedr   linked_countr  s
             rO   _format_skill_view_resultr&    s   V$DdD!xx	e#$TXXg%G$HIItxx*7+DDHHV$F(8FJGIdhh}-34::<K$((9%+,G)3DHH^4Ld)STXXn%Y]F}TF!%<i[XY>Z[E*;-89s7|A&66VWXR6==?RR+L>:;)'2Hb.)*<8<<	LL
^  99UrQ   c                   t        |       }t        |t              sy t        |xs i j	                  d      xs d      j                         xs d}t        |xs i j	                  d      xs |j	                  d      xs d      j                         xs d}t        |xs i j	                  d      xs |j	                  d      xs d      j                         xs d}|j	                  d      }|durd	nd
}d| ddd| dd| dg}|dvr|j                  d| d       t        |j	                  d      xs |j	                  d      xs d      j                         }	|	r|j                  d|	        |j	                  d      xs |j	                  d      }
|
|j                  d|
        t        |j	                  d      xs d      j                         }|r|j                  d| d       dj                  |      S )Nrj   rk   r   r  r   r  r   Fu   ✅ Skill updatedu   ✗ Skill update failed**r[   z- **Action:** `r   z- **Skill:** `>   deleter  messager   z- **Result:** replacementsreplacement_countz- **Replacements:** r^   z- **Path:** `r   )r   r   r   r   rM   rv   r   r   )r   r   r   rj   r   r   r   r   r   r*  r+  r^   s               rO   _format_skill_manage_resultr-    s   V$DdD!$*"!!(+7x8>>@LHF
'F488F+;FwGMMOZSZDTZR$$[1XTXXk5JXjY__aoeoIhhy!G$+5$8 >WF&_bOF81"=PTvUV?WXEZ}YKq12$((9%@'):@bAGGIG~gY/088N+Ltxx8K/LL+L>:;txx%2&,,.D}TF!,-99UrQ   c                   t        |       }t        |t              sy t        |j                  d      t              r!|j                  di       j                  d      n|j                  d      }t        |t              sy dt        |       g}|d d D ]  }t        |t              st        |j                  d      xs |j                  d      xs d      j                         }t        |j                  d      xs d      j                         }t        |j                  d	      xs d      j                         }|j                  d
| |rd| ndz          |s|j                  d|         t        dj                  |            S )Nr   webzWeb results: 
   titlere   r   r[   r   u   • r   r   r   )r   r   r   rM   r   r   r   rv   r   r   r   )r   r   r/  r   r   r1  re   descs           rO   _format_web_search_resultr3    sR   V$DdD!-78H$-O$((62

"
"5
)UYU]U]^cUdCc4 SXJ'(ECR &$%DHHW%D%DHEKKM$((5/'R(..0488M*0b1779tE7^se}DELL2dV%& $))E*++rQ   c           	     <   t        |       }t        |t              sy|j                  d      du r%|j                  d      rd|j                  d       S |j                  d      }t        |t              syg }|dd D ]  }t        |t              st        |j                  d      xs d      j                         }|r|d	v rGt        |j                  d
      xs d      j                         }t        |j                  d      xs |xs d      j                         }|j                  d| |r
||k7  rd| ndz   dt        |d       z           |sydt        |       dt        |      dk7  rdnd g}|j                  |       dj                  |      S )zHReturn only web_extract errors for ACP; success stays compact via title.Nr   Fr   zWeb extract failed: resultsr0  r[   >   Nonenullre   r1  Untitledr   r   z

  Error:   r   zWeb extract failed for z URLrg   r~   r   )r   r   r   rM   r   r   rv   r   r   r   r   r   )	r   r   r5  failuresr   r   re   r1  r   s	            rO   _format_web_extract_resultr;    s   V$DdD!xx	e#(9%dhhw&7%899hhy!Ggt$H 

$%DHHW%+,224!11$((5/'R(..0DHHW%::
;AACLSSE\eC5MrJ{[ijowz[{Z|M}}	


 &s8}oTXRSAS#Y[9\]^E	LL99UrQ   c           	        t        |       }t        |t              s$t        | t              r| j	                         r| S d S |j                  d      du r%|j                  d      rd|j                  d       S t        |xs i j                  d      xs d      j	                         xs d}t        |j                  d      t              r|d   }dt        |       g}|d d	 D ]:  }t        |t              s|j                  d
|        )t        |j                  d      xs |j                  d      xs d      }t        |j                  d      xs |j                  d      rdnd      }t        |j                  d      xs d      j	                         }	|j                  d      }
|j                  d      }|g}|
|j                  d|
        ||j                  d|        |j                  d| ddj                  |       |	rd|	d d  ndz          = t        |      d	kD  r!|j                  dt        |      d	z
   d       dj                  |      S t        |j                  d      xs |j                  d      xs |      j	                         }t        |j                  d      xs |xs i j                  d      xs d      j	                         }d | d!| |rd"| d#ndz   g}d$D ]=  \  }}|j                  |      |j                  d%| d&|j                  |              ? |j                  d'      xs7 |j                  d(      xs$ |j                  d)      xs |j                  d*      }|j                  d      xs |j                  d+      }|r(|j                  dd,t        t        |      d-.      g       |r(|j                  dd/t        t        |      d0.      g       |j                  d1      }|r|s|s|j                  t        |             t        dj                  |      d2.      S )3Nr   Fr   zProcess error: rj   r   	processeszProcesses: r   r   rl   r   r_   r   exitedrunningrZ   r[   pidr   zpid zexit z- `u   ` — r   r   x   ... z more process(es)r   statezProcess rm   z (``)))rZ   Command)r@  PID)r   	Exit code)r   rG  )r   Lines- **:** r  
new_outputlogstdoutstderrr    r   r  i  r*  r   )r   r   r   r   rv   rM   r   r   r   r   r   r   )r   r   r   rj   r=  r   procr   r   r   r@  rs   bitsr   labelr  r   msgs                     rO   _format_process_resultrT    s   V$DdD!#FC0V\\^vMMxx	e#(9 '!2 344$*"!!(+8y9??ANYF$((;'.%	s9~./0crN 	dDdD)r$[)dhh|,EE#FC(+^DHHX<NT]_Fdhhy)/R0668C((5/C88K(D8Dd3%L)eD6N+LL3se6$))D/):;VYs4Cyk?R_abc	d y>BLL4I 344EFGyy(#Btxx'8BFCIIKF
dhh|$L(8(8(FL"
M
S
S
UCxr&*sC5mKLE L <
U88C=$LL4wd488C=/:;< XXhb488L#9bTXXe_bPTPXPXYaPbFHHW3(!3Eb)^CKt%LMNb(N3u:T$JKL
((9
C
6%SX$))E*$77rQ   c           	        t        |       }t        |t              sy |j                  d      r3t        |j                  d      t              sd|j                  d       S |j                  d      }t        |t              sy |j                  d      }dt        |       dt        |      dk7  rdnd	 |d
| dnd	z   g}dddddd}|D ]y  }t        |t              s|j                  d|        )|j                  d      }t        |j                  d      xs d      }|j                  d      }	|j                  d      }
|j                  d      }|j                  |d       dt        |t              r|dz   nd d| }g }|	r|j                  t        |	             |r|j                  d|        |
|j                  |
 d       |r|ddj                  |      z   dz   z  }|j                  d	|g       t        |j                  d      xs d	      j                         }t        |j                  d      xs d	      j                         }|r|j                  t        |d !             |r|j                  d"t        |d#!      z          |j                  d$      }t        |t              s|s|D cg c]1  }t        |t              st        |j                  d%      xs d      3 }}|s1|j                  d&dj                  |d d'       z   t        |      d'kD  rd(t        |      d'z
   dnd	z          | t        d)j                  |      d*!      S c c}w )+Nr   r5  zDelegation failed: total_duration_secondszDelegation results: z taskrg   r~   r[    in r   r   u   ⏱u   ⚠)r   failedr   timeoutinterruptedr   
task_indexr   unknownmodelduration_seconds_child_roler   z Task r_   rm   zrole=r   r   ri   r     r   zError:    
tool_tracetoolzTools: rS   rh   r   i@  )r   r   r   rM   r   r   r   r   r   r   r   rv   r   )r   r   r5  r   r   r   r   idxr   r]  durroler   rQ  r   r   tracetnamess                      rO   _format_delegate_resultrj  M  s*   V$DdD!xxDHHY,?!F$TXXg%6$788hhy!Ggt$HH-.E#CL>c'la>OsUW6XYpu  qB_cdicjjk]l  HJ  K  LE%%EbghD v$%LL2dV%hh|$TXXh'495!hh)*xx&HHVU+,Fjc>R37X[2\\^_e^fgKKE
#KK%v'?KK3%q	"dTYYt_,s22Fb&\"dhhy)/R0668DHHW%+,224LLt<=LL^E%EEF&eT"u8=U1AtATSv-#.UEUY5":)>>\_`e\fik\kCE
SUVWBXqstu=v> $))E*$77 Vs    M$ M$c           
        t        |       }t        |t              sy |j                  d      du rd|j                  dd       S |j                  d      }t        |t              sy |j                  d      xs d}|j                  d	      }|d
k(  rdnd|rd| dndz   g}|s>|j                  t        |j                  d      xs d             dj                  |      S |D ]  }t        |t              st        |j                  d      xs d      }t        |j                  d      xs |j                  d      xs d      j                         }t        |j                  d      xs( |j                  d      xs |j                  d      xs d      j                         }	|j                  d      }
t        |j                  d      xs d      j                         }dj                  d |	||
|
 dndfD              }|j                  d| d | d!|rd"| ndz          t        |j                  d#      xs |j                  d$      xs d      j                         }|s|j                  d%t        d&j                  |j                               d'(      z           t        dj                  |      d)(      S )*Nr   FzSession search failed: r   r  r5  r`   r   rc   recentzRecent sessionszSession search results for `r   r[   r*  zNo matching sessions found.r   rl   r_   r1  whenzUntitled sessionlast_active
started_atmessage_countsourcer   c              3  8   K   | ]  }|st        |        y wru   )r   )rw   xs     rO   ry   z0_format_session_search_result.<locals>.<genexpr>  s     kAijQks   z msgsrI  z** (`rD  r   r   previewr   r   r9  r   r   )r   r   r   rM   r   r   r   r   rv   r   r   )r   r   r5  r`   rc   r   r   r   r1  rn  countrr  metar   s                 rO   _format_session_search_resultrx  {  su   V$DdD!xx	e#('?)K(LMMhhy!Ggt$88F'xDHHWE"&("28PinV\]b\ccdTetv8wxES),M0MNOyy V$%$((<(/C0DHHW%O&)9O=OPVVX488M*^dhh|.D^QWHX^\^_eeg)TXXh'-2.446yyk$5K\5'bd)ekktE7%uB/TU4&>rRSdhhy)FTXXi-@FBGMMOLLsxx/HPS TTUV $))E*$77rQ   c                   t        |       }t        |t              sy t        |xs i j	                  d      xs d      j                         xs d}t        |j	                  d      xs |xs i j	                  d      xs d      }|j	                  d      du rd| d| dt        |j	                  d	      xs d
      g}|j	                  d      }t        |t              r.|r,|j                  d       |j                  d |d d D               dj                  |      S d| d| dg}|j	                  d      r)|j                  t        |j	                  d                   |j	                  d      #|j                  d|j	                  d              |j	                  d      r#|j                  d|j	                  d              t        |xs i j	                  d      xs |xs i j	                  d      xs d      j                         }|r|j                  dt        |d      z          dj                  |      S )Nrj   r/   rr   r   Fu   ✗ Memory z	 failed (ri   r   r  r   zMatches:c              3  L   K   | ]  }d t        t        |      d         yw)r      N)r   r   )rw   ms     rO   ry   z(_format_memory_result.<locals>.<genexpr>  s#     Q2nSVS9:;Qs   "$   r   u   ✅ Memory z saved (r*  entry_countz	Entries: usagezUsage: r   old_textr[   z	Preview: r   r   )r   r   r   r   rM   rv   r   r   r   r   r   )r   r   r   rj   rr   r   r   ru  s           rO   _format_memory_resultr    s   V$DdD!$*"!!(+7x8>>@LHF(#M
'7'7'AMXNFxx	e#vhixq93txx?P?cTc;de((9%gt$LL$LLQWRa[QQyy6((6(!45Exx	S),-.xx*y-!8 9:;xxwtxx01234:2""9-S$*"1A1A*1MSQSTZZ\G[>'#EEF99UrQ   c           	        t        |      }t        |xs i j                  d      xs d      j                         }t	        |t
              r9|j                  d      du s|j                  d      r|  d| d|j                  dd       S t        |j                  d	      xs d
      j                         }|j                  d      xs |j                  d      }d|  d|rd| dnd
z   g}|r|j                  |       ||j                  d|        |j                  d      rN|j                  d      }t	        |t              r-|j                  ddj                  d |d d D              z          dj                  |      S t	        |t              r|j                         rt        |d      S d|  d|rd| dz   S d
z   S )Nr^   r   r   Fr   z failed for rm   r  r*  r[   r+  r,     ✅ 
 completedrm  r   zReplacements: files_modifiedzFiles: r   c              3  (   K   | ]
  }d | d   yw)r   NrW   )rw   fs     rO   ry   z&_format_edit_result.<locals>.<genexpr>  s     2OQqc82Os   r  r   i  r   )
r   r   rM   rv   r   r   r   r   r   r   )	rN   r   r   r   r^   r*  r+  r   r   s	            rO   _format_edit_resultr    s   V$D
'16288:D$88I%'488G+<[TF"TXXg5W4XYYdhhy)/R0668xx/P488<O3P	{*-T6$q1ArRSLL!#LL>,8988$%HH-.E%&Y2OU2AY2O)OOPyy&#6<<>fD11)J'tVD6+;LLLLrQ   c                   t        |      }t        |t              s$t        |t              r|j	                         r|S d S |j                  d      du s|j                  d      r|  d|j                  dd       S | dk(  r|j                  d      xs |j                  d      }t        |t              rd	t        |       g}|d d
 D ]  }t        |t              st        |j                  d      xs d      j	                         }t        |j                  d      xs |j                  d      xs d      j	                         }|j                  d|xs d |rd| ndz           t        dj                  |      d      S t        |j                  d      xs( |j                  d      xs |j                  d      xs |       }	t        |j                  d      xsN |j                  d      xs; |j                  d      xs( |j                  d      xs |j                  d      xs d      j	                         }
|	g}|j                  d      r=|j                  d      |	k7  r)|j                  t        |j                  d                   |
r|j                  dt        |
d      g       t        dj                  |      d      S )Nr   Fr   	 failed: r  r(   imagesr   zImages found: rS   altr[   re   srcr   imager   r   rO  r   r1  r   r   r   snapshotanalysisr*  r   )r   r   r   r   rv   rM   r   r   r   r   r   r   )rN   r   r   r   r  r   imgr  re   r1  r   s              rO   _format_browser_resultr    sz   V$DdD!#FC0V\\^vMMxx	e#txx'8Idhhw&H%IJJ(((#7txx'7fd#%c&k]34Ecr{ Yc4(cggen2399;CcggenDD"EKKMCLL2cnW%5!63E#-TV!WX	Y
 "$))E"2$??!WTXXe_W8JWiXEtxx  D488I#6  D$((::N  DRVRZRZ[eRf  Djnjrjrs|j}  D  BD  E  K  K  MDGExx488E?e3S%)*b.T:;<$))E*$77rQ   c           	        t        |      }t        |t              s$t        |t              r|j	                         r|S d S |j                  d      du s|j                  d      r|  d|j                  dd       S d|  dg}dD ]:  }|j                  |      s|j                  d	| d
|j                  |              < dj                  |      S )Nr   Fr   r  r  r  r  )	r   r^   re   	image_urlr   r   r   r*  next_runrI  rJ  r   )r   r   r   r   rv   rM   r   r   )rN   r   r   r   r   s        rO   _format_media_or_cron_resultr    s    V$DdD!#FC0V\\^vMMxx	e#txx'8Idhhw&H%IJJI;j)*Ei :88C=LL4uD#89: 99UrQ   r   indent	max_depth	max_itemsc                  d|z  }| d}| rd|  dnd}|ddg i fv rg S |dk  rgt        |t        t        f      rt        j                  |dt
        	      }nt        |      }|r| | d
t        |d       gS | t        |d       gS t        |t              r|r| | n| t        |       dg}	d}
|j                         D ]  \  }}|ddg i fv r|	j                  t        t        |      ||dz   |dz
  |             |
dz  }
|
|k\  sHt        dt        |      |
z
        }|r|	j                  d|dz   z   d| d        |	S  |	S t        |t              r|r%| | d
t        |       dt        |      dk7  rdnd n!| t        |       dt        |      dk7  rdnd g}	t        |d| d      D ]  \  }}t        |t              rit        |j                  d      xsN |j                  d      xs; |j                  d      xs( |j                  d      xs |j                  d      xs d      j                         }|r|	j                  d|dz   z   | dt        |d              dD ]O  }|j                  |      }|ddg i fvs|	j                  d|dz   z   d| dt        t        |      d              Q |	j                  d|dz   z   | d        t        |j                               d| D ]3  \  }}|	j                  t        t        |      ||dz   |dz
  |             5 t        |t              rY|	j                  d|dz   z   | dt        |       d!       |d| D ]'  }|	j                  t        d||dz   |dz
  |             ) |	j                  d|dz   z   | dt        t        |      d               t        |      |kD  r)|	j                  d|dz   z   d"t        |      |z
   d#       |	S |r| | d
t        t        |      d$       gS | t        t        |      d$       gS )%zLRender nested JSON-ish values as compact Markdown bullets, not inline blobs.r   r   r(  z:**r[   Nr   F)ensure_asciir   r      r   z fieldsrg   r  z- ... z more fieldsr}   r~   r   r*  r1  r   r   .    )r   r   typescopequality_scorescorer^   re   r   rI  rJ     r   z itemsrB   more itemsr9  )r   r   r   r   dumpsr   r   r   r   r   _format_structured_valuer   r   	enumeraterM   rv   )r   r   r  r  r  prefixbulletrR  ru  r   r   	child_keychild_value	remainingrd  r   headlinenesteds                     rO   r  r    sp    F]Fxr]F bSMbEr2r""	A~edD\*jjUCHG%jGKP6(5'>'#E"FG  G  	GY_X`aopw  @C  bD  aE  WF  G  	G%',F8E7#VHSZL2PQ&+kkm 	"I{tRR00LL(	N!A:'!m' QJE	!3u:#56	LLDFQJ$7#8yk!VW%	$ %Y^F8E7!CJ<uCJ!OSQS4TUgmfnorsxoynzz  HK  LQ  HR  VW  HW  AD  ]_  @`  ea  b"5)#4a8 "	dIC$%txx	2   Kdhhy6I   KTXXV]M^   Kbfbjbjkqbr   Kvzv~v~  @D  wE   K  IK  L  R  R  TLLDFQJ$7#8Rx_b@c?d!ef%o C	&*hhy&9&tRR.@@!LLDFQJ,?+@YKtTbcfgrcs{~T  TA  *B  CC
 LLDFQJ$7#8Q!?@26tzz|2DZi2P 	.	;4 #I +'-z*3a-*3	 D$'
 34SECI;fMN":I. 	FLL0"#)A:&/!m&/	 
 34SEN3t9\_<`;abcE"	dF u:	!LLDFQJ/0SZ)5K4LKXYJOvhugQ~c%jDEF  I  IX^W_`norsxoy  BE  aF  `G  VH  I  IrQ   Tfallback_to_textc                  t        |      }t        |t        t        f      s&|r"t        |t              r|j                         r|S d S t        |t              r|  dt        |       dt        |      dk7  rdnd g}|d d D ]`  }t        |t        t        f      r |j                  t        d|ddd	
             9|j                  dt        t	        |      d              b t        |      dkD  r!|j                  dt        |      dz
   d       t        dj                  |      d      S |j                  d      du s|j                  d      r|  d|j                  dd       S |j                  d      du rd|  dn|  dg}d}t               }|D ]X  }|j                  |      }	|	d dg i fv r|j                  |       |j                  d| dt        t	        |	      d              Z |j                         D ]`  \  }}	||v s|dv r|	d dg i fv r|j                  t        t	        |      |	dd d!
             t        |      d"k\  sO|j                  d#        n |j                  d$      }
t        |
t              r<|
j                         r,|j                  dt        |
j                         d%      g       t        dj                  |      d&      S )'Nrm   r}   rg   r~   r[   rS   r   r      r  r   r  r   rB  r  r   rO  r   Fr   r  r  Tr  r  z result)r*  r   r   task_idissue_idr1  r   	entity_idrC  servicere   r^   r   rv  r   r  rI  rJ  r9  >   rawr   entriesr   r   r  (   z- ... more fields truncatedr   i  r   )r   r   r   r   r   rv   r   r   r  r   r   r   rM   setaddr   )rN   r   r  r   r   r   priority_keysseenr   r   r   s              rO   !_format_generic_structured_resultr  M  s    V$DdT4L))j.E&,,.vb^bb$;bT5D	QB0OPQ"I 	JD$t-5b$qTUabcdr.T#"F!GHI		J
 t9r>LL4D	B/{;<dii.d;;xx	e#txx'8Idhhw&H%IJJ-1XXi-@D-HtI;j)QZP[[bNcdEM 5D NT2r2&&tC5^CJc%J$KLMN jjl 
U$;#!IIT2r2&&-c#haST`abcu:LL67 hhy!G'3GMMOb.EFG$))E*$77rQ   c                    i dfddfdd fdd fdd	fd
dfddfddfddfddfddfddfddfddfdd fdd fd d! fd" fd# fd$ fd% fd&d'j                         }| t        v r fd(}|t         d)*      }n |       }|sy t        |      gS )+Nr   c                     t               S ru   )r   r   s   rO   <lambda>z4_build_polished_completion_content.<locals>.<lambda>  s    +F3 rQ   r   c                     t               S ru   )r   function_argsr   s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    5fmL rQ   r   c                     t               S ru   r  r  r   rN   s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    1)V]S rQ   r   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    ,YN rQ   r   c                     t               S ru   )r   r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>       ;F C rQ   r   c                     t               S ru   )r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  r  rQ   r   c                     t               S ru   )rT  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    1&-H rQ   r)   c                     t               S ru   )rj  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    !8!@ rQ   r<   c                     t               S ru   )rx  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    "?"G rQ   r/   c                     t               S ru   )r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    /F rQ   r   c                     t               S ru   )r&  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>      7? rQ   r   c                     t               S ru   )r-  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s     ;FM R rQ   r   c                     t               S ru   )r3  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  r  rQ   r   c                     t               S ru   )r;  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    9&A rQ   r   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>      $:9fm$\ rQ   r"   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  r  rQ   r$   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    "8FM"Z rQ   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    &<YP]&^ rQ   c                     t               S ru   r  r   rN   s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>      ">y&"Q rQ   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  r  rQ   c                     t               S ru   r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    7	6J rQ   )r(   r*   r+   r1   c                     t               S ru   )r  r  s   rO   r  z4_build_polished_completion_content.<locals>.<lambda>  s    =iP rQ   Fr  )rM   r   r  r   )rN   r   r  	formatterr   s   ```  rO   "_build_polished_completion_contentr    sG   
3L 	S 	N	
 	C 	C 	H 	@ 	G 	F 	? 	R 	? 	A 	\  	\!" 	Z#$ _QQJ+, 
c)n- . Y/9P	0FUZ[{$K=rQ   c                l    t        | xs d      j                         }|j                  d      r|dd  S |S )Nr[   )za/zb/r   )r   rv   r   )r^   r  s     rO   _strip_diff_prefixr    s4    
djb/


!C
~~l#12wJrQ   c                R   | sg S g ddg g dfd}| j                         D ]  }|j                  d      r |        |dd j                         /|j                  d      r|dd j                         T|j                  d      rfk|j                  d      rj                  |dd        |j                  d	      rj                  |dd        |j                  d
      s|dd }j                  |       j                  |         |        S )z7Convert unified diff text into ACP diff content blocks.Nc            	         y rdk7  rn} | r| dk(  r	d d g g y j                  t        j                  t        |       rdj	                        nd dj	                                     d d g g y )Nz	/dev/nullr   r^   r  new_text)r   r   tool_diff_contentr  r   )r^   r   current_new_pathcurrent_old_path	new_lines	old_liness    rO   _flushz+_parse_unified_diff_content.<locals>._flush  s    #(8(@#38HK8W]mt{*##II!!'-1:9-9-	
  		rQ   z---    z+++ z@@+rg   -r   )returnr6  )r   r   rv   r   )		diff_textr  rx   sharedr   r  r  r  r  s	       @@@@@rO   _parse_unified_diff_contentr    s0   	G&*&*II . $$& %??6"H#ABx~~/??6"#ABx~~/??4 #(8(@??3T!"X&__S!T!"X&__S!!"XFV$V$'%* HNrQ   r  r  c               :   |xs d}t        |      dkD  r|dd dt        |       dz   }| dk(  rB	 dd	lm}  || |||
      }t        |t              r|j                         rt        |      }|r|S t        | ||      }|r|S t        |      gS # t        $ r Y (w xY w)zDBuild structured ACP completion content, falling back to plain text.r[   rO  Ni$  r   r   r   r   )extract_edit_diffr  )
r   agent.displayr  r   r   rv   r  r   r  r   )	rN   r   r  r  display_resultr  r  diff_contentpolished_contents	            rO   _build_tool_complete_contentr     s     \rN
>T!'.73v;-G_1``N"	7)+!	I )S)ioo.?:9E'' :)V][.!""  		s   A B 	BB	edit_diffc          	         	 t        | |||      S # t        $ r[}t        j                  d||       t	        |t
              r|r|nd}t        j                  | |t        |      dg d      cY d}~S d}~ww xY w)u$  Create a ToolCallStart event for the given hermes tool invocation.

    A malformed tool argument (e.g. a non-string ``command``/``path`` from a
    model that ignores the schema) must never abort the ACP tool-call render —
    ``build_tool_start`` runs on the live tool-progress callback and during
    session history replay. On any failure in the title/content/location
    builders, fall back to a minimal, valid start event. Mirrors
    ``get_cute_tool_message`` in ``agent/display.py``, wrapped for the same
    reason on the CLI side.
    r  z'ACP tool-start render failed for %r: %src  Nkindr   	locations	raw_input)	_build_tool_startr   loggerdebugr   r   r   start_tool_callrP   )tool_call_idrN   	argumentsr  exc	safe_names         rO   build_tool_startr    sx    "

 )Y)
 	
  
>	3O!+Is!;	Iv	"")-	*BB$
 	

s    	A5AA0*A50A5c                  t        |      }t        ||      }t        |      }|dk(  r|8t        j                  |j
                  |j                  |j                        g}n:|j                  dd      }|j                  d      xs d}	t        d| d	|	 d
      g}t        j                  | ||||      S |dk(  rz|8t        j                  |j
                  |j                  |j                        g}n&|j                  dd      }	t        |	rd|	 d
nd      g}t        j                  | ||||      S |dk(  r;|j                  dd      }
t        d|
       g}t        j                  | ||||      S |dk(  rt        j                  | ||d|      S |dk(  rm|j                  dd      }|j                  dd      }|j                  d      }|rd| nd}t        d| d| d|       g}t        j                  | ||||      S |dk(  r|j                  d      }t        |t              rddg}|dd D ]Z  }t        |t              s|j                  d |j                  d!d"       d#|j                  d|j                  d$d                    \ t        |      dkD  r!|j                  d%t        |      dz
   d&       t        d'j!                  |            g}nt        d(      g}t        j                  | ||||      S |d)k(  rt#        |j                  d*      xs d+      j%                         xs d+}t#        |j                  d,      xs d-      j%                         xs d-}t        d.| d| d      g}t        j                  | ||||      S |d/k(  rt#        |j                  d0      xs d1      j%                         xs d1}t#        |j                  d*      xs d+      j%                         xs d+}t#        |j                  d,      xs d-      j%                         xs d-}|rd2| d3| nd2| }	|dk(  rZt#        |j                  d4      xs d      }t#        |j                  d5      xs d      }t        j                  |	|xs d|      g}n|d6v r5t        j                  |	t#        |j                  d      xs d      7      g}n|dk(  rYt#        |j                  d,      xs d8      }t        j                  d2| d3| t#        |j                  d9      xs d      7      g}nP|d:v r6t#        |j                  d,      xs |xs |      }t        d;| d<| d=      g}nt        d>| d?| d| d      g}t        j                  | ||||      S |d@k(  rt#        |j                  dA      xs d      j%                         }|ddB t        |      dBkD  rdCt        |       dDndz   }t        |rdE| dFndG      g}t        j                  | ||||      S |dHk(  rYt#        |j                  dI      xs d      j%                         }t        |rdJ| ndK      g}t        j                  | ||||      S |dLk(  rt        j                  | ||d|      S |dMk(  rt#        |j                  d0      xs d      j%                         xs d1}t#        |j                  dN      xs d      j%                         }t#        |j                  dO      xs d      j%                         }dP| |rdQ| ndz   }|r|dRt'        |dST      z   z  }t        |      g}t        j                  | ||||      S |dUk(  r|j                  dV      }t        |t              r|r	dWt        |       dXdg}t)        |dd dY      D ]  \  }} t        | t              st#        | j                  dZ      xs d      j%                         }!t#        | j                  d[      xs d      j%                         }"|j                  | d\t'        |!d]T      z   |"rd^|" dndz           t        |      dkD  r!|j                  d%t        |      dz
   d&       t        d'j!                  |            g}nMt#        |j                  dZ      xs d      j%                         }!t        d_|!rd`t'        |!daT       ndz         g}t        j                  | ||||      S |dbk(  rYt#        |j                  dI      xs d      j%                         }t        |rdc| ndd      g}t        j                  | ||||      S |dek(  rt#        |j                  d0      xs d1      j%                         xs d1}t#        |j                  d      xs de      j%                         xs de}t#        |j                  d      xs |j                  df      xs d      j%                         }dg| d^| d}|r|dht'        |dST      z   z  }t        |      g}t        j                  | ||||      S |t*        v rN	 t-        j.                  |dit"        j      }#t        t'        |#dBT            g}t        j                  | ||||      S |st        j                  | ||d|dk      S 	 t-        j.                  |dit"        j      }#t        j4                  t        j6                  |#            g}t        j                  | |||||t*        v rdk      S |k      S # t0        t2        f$ r t#        |      }#Y w xY w# t0        t2        f$ r t#        |      }#Y w xY w)lzDBuild the ToolCallStart event (unguarded; see ``build_tool_start``).r   Nr  r`   ra   r^   zpatch inputz
Preparing z
 edit for z!. Approval prompt shows the diff.)r  r   r  r   r[   zPreparing write to z5Preparing file write. Approval prompt shows the diff.r   rZ   z$ r   r   rb   rr   r   rW  zSearching for 'z' (ri   r   r|   zUpdating todo listr  r   r   r   rm   r   rB  z morer   zReading todo listr   r   r_   r   r  zLoading skill 'r   rj   rk   zskills/r   
old_string
new_string>   r   create)r^   r  r   file_content>   r)  remove_filez	Removing z from skill ''zRunning skill_manage action 'z' on skill 'r   rs   r`  r   r   z)Running Python helper script:

```python
z
```zRunning Python helper scriptr   rc   zSearching the web for: zSearching the webr   r   rl   r   zProcess action: z

Session: z
Input: r9  r   r)   rn   zDelegating z tasksrg   ro   rf  r  r{  r   zDelegating taskz:
ra  r<   zSearching past sessions for: zLoading recent sessionsr/   r  zMemory z

Preview: r   )r  r   r  )rP   r   extract_locationsr   r  r^   r  r  rM   r   r  r   r   r   r   r   r   r   rv   r   r  r   r   r  	TypeError
ValueErrorr   r   )$r  rN   r  r  r  r1  r  r   r`   r^   rZ   rb   rr   search_pathwherer   preview_linesr   r   r   rj   oldnewrs   ru  rc   r   data_previewr   rn   r   itaskro   rf  	args_texts$                                       rO   r  r  1  s    #DY	2E!),IG %%"&//&//G ==3D==(9MDz$z$?`abcG""%dGy
 	
 L  %%"&//&//G ==,D^b24&8YZ  i`  a  bG""%dGy
 	
 J--	2.2gY()""%dGy
 	
 K ""%dDI
 	
 N"--	2.x3mmF+(3${m$?7)3vhawGHI""%dGy
 	
 Fg&eT"126Mbq	 zdD)!((2dhhx.K-LBtxxXacgckcklprtcuOvNw)xyz 5zA~$$tCJN+;5%ABTYY}567G012G""%dGy
 	
 L 9==(/C0668?C	k2@jAGGIWZ	?4&I;a@AB""%dGy
 	
 N"Y]]8,89??AMX9==(/C0668?C	k2@jAGGIWZ	/8a	{+v>NWimmL17R8CimmL17R8C,,$WZ[\G))%% y!9!?R@G |#{3=v>F%%"4&&2 ~!>!D"EG 00{3HyHDIFydV1EFGG<VHLQUPVVYZcYddefghG""%dGy
 	
 N"9==(.B/557u+RUVZR[^bRb73t9+5M!NhjkZaGyPUV  hF  G  H""%dGy
 	
 L IMM'*0b1779e25':I\]^""%dGy
 	
 M! ""%dDI
 	
 IY]]8,2399;Gx)---34::<9==06B7==?!&*SC5.AbQK.S"IIID;-""%dGy
 	
 O#g&eT"u"3u:,f5r:E$U2AY2 n4dD)txx/526<<>Dtxx/526<<>DLLA3bN4s,K!K_cQSTXSYYZ|ik!lm	n
 5zA~tCJN#359:TYYu-./Gy}}V,2399;D.]aCtSV8W7X2YgijklG""%dGy
 	
 $$IMM'*0b1779E8@Ohij""%dGy
 	
 HY]]8,89??AMXY]]8,89??AMXimmI.Q)--
2KQrRXXZ6(!,MN7#$FFFD;-""%dGy
 	
 O#	'

9QDI 	>?@""%dGy
 	
 ""%dDIY]
 	

#JJyC@	 y 9:;Ge$9#6$ <E % :& 	'II	' z" #	N	#s$   l6 m 6mmm32m3c                @    t        t        |       t        t        f      S ru   )r   r   r   r   r  s    rO   _is_structured_json_resultr%    s    '/$>>rQ   c           	         t        |      }|dk(  rt        |      }|rt        |      gnd}nt        ||||      }t	        j
                  | |t        ||      rdnd||t        v st        |      rd      S |      S )zCCreate a ToolCallUpdate (progress) event for a completed tool call.r   Nr  rX  r   )r  r   r   
raw_output)	rP   r;  r   r   r   update_tool_callr   r   r%  )r  rN   r   r  r  r  
error_textr   s           rO   build_tool_completer*    s     #DM!/7
)35$%.'	
 .vyAx{$7;UV\;]4 
 dj rQ   c                    g }| j                  d      }|r@| j                  d      xs | j                  d      }|j                  t        ||             |S )z2Extract file-system locations from tool arguments.r^   r   rx   )r^   rx   )rM   r   r   )r  r  r^   rx   s       rO   r  r  :  sR     )+I== D}}X&?)--*?)t$?@rQ   )rN   r   r  r   )r  r   )rN   r   r   Dict[str, Any]r  r   )r   r   r  r   )r   Optional[str]r  r   ru   )r   r-  rN   z
str | Noner  r   )rO  )r   r   r   r   r  r   )r[   )r   r   r   r   r  r   )r   r-  r  r-  )r   r-  r   Optional[Dict[str, Any]]r  r-  )r  )r   r   r   r   r  z	list[str])rN   r   r   r-  r   r.  r  r-  )rN   r   r   r-  r  r-  )r   r   r   r   r  r   r  r   r  r   r  z	List[str])rN   r   r   r-  r  r   r  r-  )rN   r   r   r-  r  r.  r  zOptional[List[Any]])r^   r   r  r   )r  r   r  	List[Any])
rN   r   r   r-  r  r.  r  r   r  r/  )
r  r   rN   r   r  r,  r  r   r  r	   )r   r-  r  r   )NNN)r  r   rN   r   r   r-  r  r.  r  r   r  r
   )r  r,  r  zList[ToolCallLocation]):__doc__
__future__r   r   loggingrT   typingr   r   r   r   r   
acp.schemar   r	   r
   r   	getLogger__name__r	  r.   __annotations__r   rP   rX   r   r   r   r   r   r   r   r   r   r  r  r&  r-  r3  r;  rT  rj  rx  r  r  r  r  r  r  r  r  r  r   r  r  r%  r*  r  rW   rQ   rO   <module>r8     s   Z "    , , 
  
		8	$#&#& &#& V	#&
 H#& 	#& y#& I#& G#& &#& 6#& F#&  '!#&" 7##&& '#&( Y)#&* I+#&, -#&.  E#&" #L,1
)
^B5$#LW1@B688v,B
B<,(>,8^+8\8>6M.84
" WI	WIWI 	WI
 WI WI WI| "	181818 	18
 18h$$$ ,$ 	$N8~ /3!#!#!# ,	!#
 !# !#\ 


 

 
 
F aaa a
 a aH? !.2  ,	
  B			rQ   