
    Cj                     F   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  \(       a  S SKJr  \R                   " \5      rSrSrS	\4S
 jrS\S\\\4   S	S4S jrS\S-  S\S-  S\S\S\S	S4S jrS\S	S4S jrSSSS\S	S4S jjrSS\S\S-  S	S4S jjrg)    N)datetime)TYPE_CHECKINGAny)load_settings)
SESSION_ID
base_propsis_first_run)ReportState/phc_7rO3XRuNT5sgSKAl6HDIrWdSGh1COzxw0vxVIAR6vVZzhttps://us.i.posthog.comreturnc                  >    [        5       R                  R                  $ N)r   	telemetryenabled     i/home/rurouni/.local/share/pipx/venvs/strix-agent/lib/python3.13/site-packages/strix/telemetry/posthog.py_is_enabledr      s    ?$$,,,r   event
propertiesc                    [        5       (       d  [        R                  SU 5        g  [        U [        US.n[
        R                  R                  [         S3[        R                  " U5      R                  5       SS0S9n[
        R                  R                  USS9    S S S 5        [        R                  S	U 5        g ! , (       d  f       N%= f! [         a    [        R                  S
U SS9   g f = f)Nz#posthog disabled; skipping event %s)api_keyr   distinct_idr   z	/capture/zContent-Typezapplication/json)dataheaders
   )timeoutzposthog event sent: %sz posthog send failed for event %sT)exc_info)r   loggerdebug_POSTHOG_PUBLIC_API_KEYr   urllibrequestRequest_POSTHOG_HOSTjsondumpsencodeurlopen	Exception)r   r   payloadreqs       r   _sendr-      s    ==:EB6.%$	
 nn$$oY'G$++-#%78 % 

 ^^##C#4 5
 	-u5 54 O7NOs*   A7C C !C  
C
C C32C3model	scan_modeis_whiteboxinteractivehas_instructionsc                     [        S0 [        5       EU =(       d    SU=(       d    SU(       a  SOSUU[        5       S.E5        g )Nscan_startedunknownwhiteboxblackbox)r.   r/   	scan_typer1   r2   	first_run)r-   r   r	   )r.   r/   r0   r1   r2   s        r   startr:   5   sE     
	
l	
'i"/i'2
& 0%	
r   severityc                 T    [        S0 [        5       ESU R                  5       0E5        g )Nfinding_reportedr;   )r-   r   lower)r;   s    r   findingr?   J   s-    		
l	
(	
r   report_stater
   exit_reasonc           
         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      [/        U R                   5      S.EUR1                  5        V
Vs0 s H  u  pSU
 3U_M     snn
EUE5        g ! [        [        [        4 a     GNQf = f! [        [        [        4 a     Nf = fs  snn
f )Nr   )criticalhighmediumlowinfor;   rG      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)rA   duration_secondsvulnerabilities_totalvulnerabilities_)vulnerability_reportsgetr>   r   fromisoformat
start_timereplaceend_timenowtzinfo	isoformattotal_seconds
ValueError	TypeErrorAttributeErrorget_total_llm_usage
isinstancedictintfloatr-   r   roundlenitems)r@   rA   vulnerabilities_countsvsevdurationr:   end_iso	llm_propsusageks              r   endru   T   s   *+Q!AWXY//eeJ'--/("'1,' 0
 H&&|'>'>'F'FsH'UV''Q8<<+E+O+O+Q**7??3+IJURaac )+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(H3 =CI I*3III'&I'
error_type	error_msgc                 R    0 [        5       ESU 0EnU(       a  XS'   [        SU5        g )Nrv   rw   error)r   r-   )rv   rw   propss      r   ry   ry   ~   s*    6z|6\:6E&k	'5r   )	completedr   )r&   loggingurllib.requestr"   r   typingr   r   strix.configr   strix.telemetry._commonr   r   r	   strix.report.stater
   	getLogger__name__r   r!   r%   boolr   strrg   r-   r:   r?   ru   ry   r   r   r   <module>r      s       % &  . 
		8	$K *-T -6 6$sCx. 6T 60:Tz  	
  
*c d 'm '# ' 'Tc cDj D r   