
    +j                      d    d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	Z
d dlZ G d d          ZdS )    )web)Optional)folder_names_and_pathsget_directory_by_type)TerminalServiceNc                   $    e Zd ZdZd Zd Zd ZdS )InternalRoutesz
    The top level web router for internal routes: /internal/*
    The endpoints here should NOT be depended upon. It is for ComfyUI frontend use only.
    Check README.md for more information.
    c                 z    t          j                    | _        d | _        || _        t          |          | _        d S N)r   RouteTableDefroutes_appprompt_serverr   terminal_service)selfr   s     J/home/wildlama/comfy/ComfyUI/api_server/routes/internal/internal_routes.py__init__zInternalRoutes.__init__   s7    ),):)<)</3	* / > >    c                      j                             d          d             } j                             d           fd            } j                             d           fd            } j                             d          d             } j                             d	          d
t          j        dt          j        fd            }d S )Nz/logsc                    K   t          j        d                    d t          j                                        D                                 S )N c                 6    g | ]}|d          dz   |d         z   S )tz - m ).0ls     r   
<listcomp>zAInternalRoutes.setup_routes.<locals>.get_logs.<locals>.<listcomp>   s)    -g-g-gAqv~#/F-g-g-gr   )r   json_responsejoinapploggerget_logs)requests    r   r#   z-InternalRoutes.setup_routes.<locals>.get_logs   sB      $RWW-g-gQTQ[QdQdQfQf-g-g-g%h%hiiir   z	/logs/rawc                    K   j                                          t          j        t	          t
          j                                                  j         j        j         j	        dd          S )N)colsrows)entriessize)
r   update_sizer   r   listr!   r"   r#   r&   r'   )r$   r   s    r   get_raw_logsz1InternalRoutes.setup_routes.<locals>.get_raw_logs   sk      !--///$
 3 3 5 566!%!6!;TEZE_``& &   r   z/logs/subscribec                    K   |                                   d {V }|d         }|d         }|rj                            |           nj                            |           t	          j        d          S )NclientIdenabled   status)jsonr   	subscribeunsubscriber   Response)r$   	json_data	client_idr/   r   s       r   subscribe_logsz3InternalRoutes.setup_routes.<locals>.subscribe_logs"   s      %llnn,,,,,,I!*-I	*G =%//	::::%11)<<<<s++++r   z/folder_pathsc                 r   K   i }t           D ]}t           |         d         ||<   t          j        |          S )Nr   )r   r   r   )r$   responsekeys      r   get_folder_pathsz5InternalRoutes.setup_routes.<locals>.get_folder_paths/   s@      H- ? ? 6s ;A >$X...r   z/files/{directory_type}r$   returnc                 L  K   | j         d         dvrt          j        ddid          S t                    }dt          j        dt          fd	t          fd
t	          j        |          D             d           }t          j        fd|D             d          S )Ndirectory_type)outputinputtemperrorzInvalid directory typei  r1   entryr>   c                 `    |                                  o| j                            d           S )z3Filter out hidden files (e.g., .DS_Store on macOS)..)is_filename
startswithrE   s    r   is_visible_filezGInternalRoutes.setup_routes.<locals>.get_files.<locals>.is_visible_file>   s(    }}Iuz/D/DS/I/I+IIr   c              3   2   K   | ]} |          |V  d S r   r   )r   rE   rL   s     r   	<genexpr>zAInternalRoutes.setup_routes.<locals>.get_files.<locals>.<genexpr>C   s2      TT5__U=S=STTTTTTTr   c                 6    |                                  j         S r   )statst_mtimerK   s    r   <lambda>z@InternalRoutes.setup_routes.<locals>.get_files.<locals>.<lambda>D   s    5::<<#8"8 r   )r<   c                 *    g | ]}|j          d  dS )z [])rI   )r   rE   r@   s     r   r   zBInternalRoutes.setup_routes.<locals>.get_files.<locals>.<listcomp>F   s,    %c%c%cU&H&H~&H&H&H%c%c%cr   r0   )	
match_infor   r   r   osDirEntryboolsortedscandir)r$   	directorysorted_filesr@   rL   s      @@r   	get_filesz.InternalRoutes.setup_routes.<locals>.get_files6   s      $/0@AN%@@@('3K)LUXYYYY-n==IJr{ Jt J J J J "TTTTBJy$9$9TTT88  L $%c%c%c%cVb%c%c%cloppppr   )r   getpatchr   Requestr6   )r   r#   r,   r9   r=   r]   s   `     r   setup_routeszInternalRoutes.setup_routes   s   		!	!	j 	j 
"	!	j 
	%	%	 	 	 	 
&	%	 
		,	-	-		, 		, 		, 		, 
.	-		, 
	)	)	/ 	/ 
*	)	/ 
2	3	3	qS[ 	qS\ 	q 	q 	q 
4	3	q 	q 	qr   c                     | j         Kt          j                    | _         |                                  | j                             | j                   | j         S r   )r   r   Applicationra   
add_routesr   )r   s    r   get_appzInternalRoutes.get_appI   sK    9))DII  ---yr   N)__name__
__module____qualname____doc__r   ra   re   r   r   r   r	   r	      sO         ? ? ?1q 1q 1qh    r   r	   )aiohttpr   typingr   folder_pathsr   r   $api_server.services.terminal_servicer   
app.loggerr!   rV   r	   r   r   r   <module>ro      s                F F F F F F F F @ @ @ @ @ @     				F F F F F F F F F Fr   