
    j&              
       ~   d dl Z ddlmZmZ ddlmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZmZ ddlmZmZmZmZmZ dd	lmZmZmZmZmZmZmZmZ d
ddZ eedZ!eej        dZ"dde#de$fdZ%d Z&de#fdZ'de#de#de(dz  fdZ)de$fdZ*de#de$de$de+e#e$f         fdZ,d Z-d Z.de#fdZ/d Z0e1dk    r e0             dS dS )     N   )claudecodex)load_rate_limits)detect_agents)aggregate_dailyaggregate_monthlyaggregate_sessionsaggregate_weekly)analyze_blockscalculate_p90)is_setupneeds_updatesetupunsetupupdate_hook)AGENT_LABELconsolerender_dailyrender_dashboardrender_monthlyrender_sessionsrender_tab_barrender_weeklyclaude-coder   )r   r   agent_id
hours_backc                 j    t                               |           }|r|                    |          ng S )N)r   )AGENT_LOADERSgetload_entries)r   r   loaders      [C:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\src/cli.py_load_entriesr$      s6    x((F9?G6*555RG    c                     g }| D ]E}t          |j                  } ||          D ]#}|j        |_        |                    |           $F|S N)r$   idr   append)agentsagg_fnstatsaentriesss         r#   _aggregate_per_agentr0      sb    E  %% 	 	AAJLLOOOO	 Lr%   c                     t          j        | |           }t          | |          }|st          j        d           d S t          di | d S )Nu*   [yellow]暂无 token 使用数据[/yellow] )r   r    _build_agent_datar   printr   )r   
agent_namedatas      r#   _show_agent_dashboardr7   "   sZ    844JXz22D CDDDtr%   r5   returnc           
         t          |           }|sd S t          |          }t          |          }t          |          }t	          |          }ddlm}m}m}	 |                    |j	                   |	d          z
  fd|D             }
t          |
          }t                              | d                       }d }|o|j        d up|j        d u}|st          |          }t!          ||||||||g          S )Nr   )datetimetimezone	timedelta0   )hoursc                 *    g | ]}|j         k    |S r2   )	timestamp).0ecutoffs     r#   
<listcomp>z%_build_agent_data.<locals>.<listcomp>5   s%    :::AAK6$9:a:::r%   c                      d S r'   r2   r2   r%   r#   <lambda>z#_build_agent_data.<locals>.<lambda>7   s    4 r%   )daily_statsweekly_statsmonthly_statssessionsblocksrate_limitsp90r*   )r$   r   r   r	   r
   r:   r;   r<   nowutcr   RATE_LIMIT_LOADERSr    five_hour_pctseven_day_pctr   dict)r   r5   r.   dailyweeklymonthlyrJ   r:   r;   r<   recentrK   rL   rM   
has_limitsrC   s                  @r#   r3   r3   +   s=   H%%G tG$$Eg&&F((G!'**H6666666666\\(,''))"*=*=*==F:::::::FF##F$((<<@@BBK
Cq+";4"G"p;KdlpKpJ #E""g&k   r%   c                 8   dd l }d }|j                            d          s|j                            d          rd}n6|j                            d          s|j                            d          rd}|r$t          |           D ]\  }}|j        |k    r|c S dS )Nr   CODEX_THREAD_IDCODEX_SANDBOXr   CLAUDE_CONFIG_DIR
CLAUDECODEr   )osenvironr    	enumerater(   )r*   r^   	preferrediagents        r#   _initial_agent_indexrd   C   s    IIII	z~~'(( "BJNN?,K,K "			+	,	, "
|0L0L "!	 !&)) 	 	HAux9$ 1r%   textheightscroll_offsetc                 D   |                                  }|sdS t          d|dz
            }t          dt          |          |z
            }t          dt          ||                    }|d d         |d|z   d|z   |z   dz
           z   }d                    |          |fS )N) r   r   r   
)
splitlinesmaxlenminjoin)re   rf   rg   linesmax_body
max_scrollvisibles          r#   _fit_screenrt   S   s    OOE u1fqj!!HQE

X-..J3}j99::MBQBi%M 1!m2Ch2NQR2R RSSG99Wz))r%   c           	         dd l }dd l}dd l}ddlm} ddlm} dd lmc m	} d | D             }t          |           }d}	|j        }
t          j                            d           i }	 	 | |         }|j        |vr_t          j                            d           t          j                                         t#          |j        |j                  ||j        <   |                    d          }|j        }|j        } |            } |||d	          |_        t-          ||           ||j                 }|rt/          di |d
dd n|j                            d           |
|_        t3          |                                ||	          \  }}t          j                            d|z              t          j                                         t7          ||          }|dk    r|dz
  t9          |           z  }d}	n|dk    r|dz   t9          |           z  }d}	n|dk    rt;          d|	dz
            }	nw|dk    rt=          ||	dz             }	n]|dk    r%t;          d|	t;          d|dz
            z
            }	n2|dk    r%t=          ||	t;          d|dz
            z             }	n|dk    rnG	 t          j                            d           t          j                                         |
|_        d S # t          j                            d           t          j                                         |
|_        w xY w)Nr   )StringIO)Consolec                     g | ]	}|j         
S r2   namerA   r-   s     r#   rD   z/_show_interactive_dashboard.<locals>.<listcomp>f       ***a16***r%   z[?1049h[?7l[2J[3J[H[?25lTu"   [2J[3J[H[2m加载数据...[0m)P      )filewidthforce_terminal
   F)session_limit
top_marginu   [yellow]暂无数据[/yellow]z[2J[3J[Hleftr   rightupdownpage_up   	page_downquitz[?7h[?25h[?1049lr2   )ttytermiosshutiliorv   rich.consolerw   src.ui.tablesuitablesrd   r   sysstdoutwriter(   flushr3   rz   get_terminal_sizecolumnsrp   r   r   r4   rt   getvalue	_read_keyrm   rl   rn   )r*   r   r   r   rv   RichConsole_tablesagent_namescurrentrg   origcacherc   sizer   rf   bufr6   screenrr   keys                        r#   _show_interactive_dashboardr   ^   s   JJJNNNMMM333333#########**6***K"6**GM?DJGHHHE0+	7OExu$ J
  !TUUU
  """"3EHej"I"Ieh++H55DLEZF(**C)kd  GO ;000?D H LL4LreLLLLLL%%&FGGG"GO!,S\\^^V]!S!SFJJ3f<===JC))Cf} "Q;#f++5 ! "Q;#f++5 ! 	 #A}q'8 9 9  #J0A B B	!  #A}s1fqj7I7I'I J J#  #JAvPQz@R@R0R S S W+	V 
7888
 	
7888
s   (IK7 7AL=c                 h   dd l }dd l}t          j                                        }|                    |          }	 |                     |           |                    |d          }|dk    r|                    |gg g d          d         s	 |                    ||j	        |           dS |                    |d          }|dk    r
|                    |d          }|dk    r	 |                    ||j	        |           dS |d	k    r	 |                    ||j	        |           d
S |dk    r	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           dS |dv r\|                    |gg g d          d         r|                    |d           |dk    rdnd	 |                    ||j	        |           S 	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           d
S |dk    r	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           dS |dk    r	 |                    ||j	        |           dS |dv r	 |                    ||j	        |           dS 	 |                    ||j	        |           dS # |                    ||j	        |           w xY w)Nr   r      g?r      [   Dr      Cr      Ar      Br   )   5   6r   r   r   other   h   l   k   j   b   f)   q   Q   )
r^   selectr   stdinfileno	tcgetattrsetrawread	tcsetattr	TCSADRAIN)	r   r   _osr   fdoldchch2ch3s	            r#   r   r      s   MMM					B


B

C&6

2XXb!__= 	=="r2t44Q7 B 	"g/55555A ((2q//Cd{ Ehhr1oo$; "!8 	"g/555557 $; #"4 	"g/555553 $;  0 	"g/55555/ $; "!, 	"g/55555+ ,& E}}bT2r488; (Q(+tD99D$ 	"g/5555# " 	"g/55555! : 	 	"g/55555 : 	 	"g/55555 : 	 	"g/55555 : 	 	"g/55555 : 	 	"g/55555 : 	
 	"g/55555	 && 	 	"g/55555 "g/55555"g/5555sU   AL -9L L *L L 4AL 3L L =L "L L ,L L L1c                  $    ddl m}   | d          S )Nr   versionztoken-tracker)importlib.metadatar   r   s    r#   _get_versionr      s$    ******7?###r%   c                      t           j        dd          } | r| d         nd}|dv r t          dt                                  d S |dk    rt	                       d S |dk    rt                       d S t                      }|s(t          j        d           t          j        d           d	 |D             }|dk    r5t          j        d
d	                    d |D                        d           t                      st	          d           nt                      rt                       |t          v rNt          |         }||vr,t          j        d| d           t          j        d           t          |           d S |dk    rt          |           dk    r| d         t          v r| d         nd }|rMt          |         }||vr,t          j        d| d           t          j        d           t          |           n[t          |          dk    r.t           j                                        rt%          |           nt          |d         j                   d S d |D             }|dk    r@t)          |t*                    }|                    d d           t/          ||           d S |dk    r@t)          |t0                    }|                    d d           t3          ||           d S |dk    r?t)          |t4                    }|                    d            t7          ||           d S |dk    r{d}t          |           dk    r'	 t9          | d                   }n# t:          $ r Y nw xY wt)          |t<                    }|                    d d           t?          ||           d S t          j        d| d           t          j        d            t          j        d           d S )!Nr   r   	dashboard)z	--versionz-vz-Vztt r   r   u&   [red]未检测到任何 AI Agent[/red]c                     h | ]	}|j         
S r2   )r(   r{   s     r#   	<setcomp>zmain.<locals>.<setcomp>   s    &&&!&&&r%   u   [dim]检测到: z, c              3   *   K   | ]}|j         d z   V  dS )u    ✓Nry   r{   s     r#   	<genexpr>zmain.<locals>.<genexpr>   s(      2S2Sq16F?2S2S2S2S2S2Sr%   z[/dim]T)autou   [red]未检测到 z[/red]c                     g | ]	}|j         
S r2   ry   r{   s     r#   rD   zmain.<locals>.<listcomp>	  r|   r%   rT   c                     | j         S r'   )total_tokensr/   s    r#   rF   zmain.<locals>.<lambda>  s     r%   )r   reverse)r*   rU   c                     | j         S r'   )weekr   s    r#   rF   zmain.<locals>.<lambda>  s     r%   rV   c                     | j         S r'   )monthr   s    r#   rF   zmain.<locals>.<lambda>  s     r%   )r   rJ      c                     | j         S r'   )
start_timer   s    r#   rF   zmain.<locals>.<lambda>  s     r%   u   [red]未知命令: un   [dim]可用命令: dashboard, daily, weekly, monthly, sessions, claude, codex, setup, unsetup, --version[/dim]) r   argvr4   r   r   r   r   r   exitro   r   r   r   AGENT_ALIASESr7   rm   r   isattyr   r(   r0   r   sortr   r   r   r	   r   int
ValueErrorr
   r   )	argscommandr*   	agent_idsr   agent_filterr   r,   limits	            r#   mainr      sm   8ABB<D.d1gg;G++ $LNN$$%%%' ) 			__F >???&&v&&&I+ ][2S2SF2S2S2S)S)S[[[\\\:: 4	  -  )9$ 	M>w>>>???HQKKKh'''+ "%d))a-VDG}4LVtAwwRV 		0$\2Hy( G<GGGHHH!(++++[[1_ 	0!1!1!3!3 	0'////!&),/// +*6***K' $V_==

//
>>>U;//////	H	 $V-=>>

''
666eK000000	I	 $V->??

((
)))u[111111	J	 t99q= 	DG   $V-?@@

--t
<<<u%%%%%;G;;;<<<  G  	H  	H  	Hs   M/ /
M<;M<__main__)r   )2r   adaptersr   r   adapters.rate_limitsr   load_claude_rate_limitsadapters.registryr   analyzer.aggregatorr   r	   r
   r   analyzer.blocksr   r   hooksr   r   r   r   r   	ui.tablesr   r   r   r   r   r   r   r   r   r   rP   strr   r$   r0   r7   rS   r3   rd   tuplert   r   r   r   r   __name__r2   r%   r#   <module>r      s   



 # # # # # # # # M M M M M M , , , , , , i i i i i i i i i i i i : : : : : : : : F F F F F F F F F F F F F F                   
 )7;; &77%<uG]^^ H HC HS H H H H
  C          0C     *c *3 *s *uS#X * * * *@ @ @F+6 +6 +6\$c $ $ $ $
P P Pf z DFFFFF r%   