
    Cj                       S SK Jr  S SKrS SKrS SKrS SKJr  S SKJrJ	r	  S SK
Jr  S SKJrJrJrJr  \(       a  S SKJr  \R&                  " \5      rSrSS	 jrSS
 jr            SS jrSS jrSSS jjrSSS jjrg)    )annotationsN)datetime)TYPE_CHECKINGAny)load_settings)
SESSION_ID
base_propsget_versionis_first_run)ReportStatezhttps://strix.gateway.scarf.shc                 >    [        5       R                  R                  $ N)r   	telemetryenabled     g/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/strix/telemetry/scarf.py_is_enabledr      s    ?$$,,,r   c           
     @   [        5       (       d  [        R                  SU 5        g  [        U5      n[	        UR                  S[        5       5      =(       d    S5      nS[        R                  R                  U SS9 S[        R                  R                  USS9 3n[        R                  R                  UR                  5        VVs0 s H  u  pVXVc  SO
[	        U5      _M     snn5      n[         U 3nU(       a  U SU 3n[        R                  R                  USS	9n	[        R                  R                  U	S
S9    S S S 5        [        R                  SU 5        g s  snnf ! , (       d  f       N+= f! [          a    [        R                  SU SS9   g f = f)Nz!scarf disabled; skipping event %sstrix_versionunknown/ )safe?POST)method
   )timeoutzscarf event sent: %szscarf send failed for event %sT)exc_info)r   loggerdebugdictstrpopr
   urllibparsequote	urlencodeitems_SCARF_ENDPOINTrequestRequesturlopen	Exception)
event
propertiespropsversionpathkvqueryurlreqs
             r   _sendr:      s]   ==8%@4Z eii?L9M6<<%%e"%56a8J8J7Y[8J8\7]^&&:?++-H-$!Qyc!f,-H
 !!$(E5'"Cnn$$S$8^^##C#4 5
 	+U3 I 54 M5utLMs=   B#E; E$
'AE; E*E; $E; *
E84E; ;FFc                    [        S0 [        5       E[        U =(       d    SU=(       d    SU(       a  SOSUU[        5       S.E5        g )Nscan_startedr   whiteboxblackbox)sessionmodel	scan_mode	scan_typeinteractivehas_instructions	first_run)r:   r	   r   r   )r@   rA   is_whiteboxrC   rD   s        r   startrG   6   sH     
		
l		
!'i"/i'2
& 0%		
r   c                ^    [        S0 [        5       E[        U R                  5       S.E5        g )Nfinding_reported)r?   severity)r:   r	   r   lower)rJ   s    r   findingrL   L   s.    		
l	
! (	
r   c           
        SSSSSS.nU R                    H6  nUR                  SS5      R                  5       nXB;   d  M*  X$==   S-  ss'   M8     Sn [        R                  " U R
                  R                  SS5      5      nU R                  =(       d.    [        R                  " UR                  5      R                  5       n[        R                  " UR                  SS5      5      U-
  R                  5       n0 n U R                  5       n	[!        U	["        5      (       a  [%        U	R                  S	5      =(       d    S5      [%        U	R                  S
5      =(       d    S5      [%        U	R                  S5      =(       d    S5      [%        U	R                  S5      =(       d    S5      ['        U	R                  S5      =(       d    S5      S.n[)        S0 [+        5       E[,        U[/        U5      [1        U R                   5      S.EUR3                  5        V
Vs0 s H  u  pSU
 3U_M     snn
EUE5        g ! [        [        [        4 a     GNVf = f! [        [        [        4 a     Nf = fs  snn
f )Nr   )criticalhighmediumlowinforJ   rR      g        Zz+00:00requestsinput_tokensoutput_tokenstotal_tokenscost)llm_requestsllm_input_tokensllm_output_tokens
llm_tokensllm_cost
scan_ended)r?   exit_reasonduration_secondsvulnerabilities_totalvulnerabilities_)vulnerability_reportsgetrK   r   fromisoformat
start_timereplaceend_timenowtzinfo	isoformattotal_seconds
ValueError	TypeErrorAttributeErrorget_total_llm_usage
isinstancer#   intfloatr:   r	   r   roundlenr*   )report_stater`   vulnerabilities_countsr6   sevduration
scan_startend_iso	llm_propsusager5   s              r   endr   W   s#   *+Q!AWXY//eeJ'--/("'1,' 0
 H++L,C,C,K,KCQY,Z[
''V8<<
8I8I+J+T+T+V""7??3#ABZO
-/ 	 )+I002eT"" #EIIj$9$>Q ?$'		.(A(FQ$G%(?)C)Hq%I!%))N";"@qA!%))F"3":s;I 
	
l	
!& %h%()K)K%L	
 6L5Q5Q5ST5STQ!!%q(5ST	
 	
# 	>2  z>2  Us,   B(H8 =CI I/8III,+I,c                \    0 [        5       E[        U S.EnU(       a  XS'   [        SU5        g )N)r?   
error_type	error_msgerror)r	   r   r:   )r   r   r2   s      r   r   r      s5    
, E
 &k	'5r   )returnbool)r0   r$   r1   zdict[str, Any]r   None)r@   
str | NonerA   r   rF   r   rC   r   rD   r   r   r   )rJ   r$   r   r   )	completed)rw   r   r`   r$   r   r   r   )r   r$   r   r   r   r   )
__future__r   loggingurllib.parser&   urllib.requestr   typingr   r   strix.configr   strix.telemetry._commonr   r	   r
   r   strix.report.stater   	getLogger__name__r!   r+   r   r:   rG   rL   r   r   r   r   r   <module>r      s    "     % &  . 
		8	$2-4.  	
  
,*Zr   