📄 chat-webui.cpython-312.pyc
/home/palash/git/local-ai/__pycache__/chat-webui.cpython-312.pyc
Language: pyc • Lines: 228
�

}Y�j� ��
�dZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZej&j)d��ddlmZddlmZmZddlmZddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMdd	lNmOZOmPZPmQZQddlZej�j�de�dd
lTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~mZm�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�dd
l�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�m�Z�ddl�m�Z�m�Z�m�Z�e~e�j�e��e��e��eM�Z�e�ddde�dd�eQeOD�cic]
}|e��|��c}�e�dk(�r
e�j�eHd��e��e��	e	�je-�d�d���Z�e�jdk7r	�ed ��e�d!�	e	�je=d���Z�e�jd#vr	e�d$�n�ed%�e�j����	e
�je�d�*��j�e
�je�d+d�,��j�e
�je�d-d�,��j�e
�je�d�*��j�e
�je�d�*��j�e
�je�d�*��j�e
�je�d�*��j�e
�je�d�*��j�e�d.e:���e�j�je)e:feP��Z
	�e
�j�yycc}w#�e$re�d"�e�Y���wxYw#�e$r3�Ze�d&e=�d'�e�d(��e�j
d)�Yd�Z�[���d�Z�[wwxYw#�e$r�e
�j�YywxYw)/uYChat Web UI — script entrypoint.

The chat engine implementation now lives in the :mod:`server.features` package.
This file remains the single script entrypoint and the owner of every shared
value: it re-exports the feature modules' functions and state, registers itself
with the ``M`` proxy (see :mod:`server.features.state`), and wires up the
background threads.

Feature code resolves shared state, config values and cross-cutting helpers at
call time through the ``M`` proxy, so monkeypatching ``chat-webui.<name>`` —
which the test-suite relies on — keeps working across module boundaries.
�NT)�line_buffering)�datetime)�urlparse�parse_qs)�read_file_text)2�AUDIO_TOKEN_COST�COMFYUI_DIR�
COMFYUI_INPUT�COMFYUI_OUTPUT�COMFYUI_URL�DDNS_CHECK_INTERVAL�DDNS_DOMAIN�DDNS_SUBDOMAIN�	FILES_DIR�FORCE_GPU_LANE�GODADDY_API_KEY�GODADDY_API_SECRET�
HEARTBEAT_URL�HOST�IMG_PATH�IMAGE_MODELS�IMAGE_TOKEN_COST�
LLAMA_BASE�LLAMA_BASE_CPU�LLAMA_GEMMA_NGL�LLAMA_QWEN_NGL�LLAMA_SERVER_ARGS�LLAMA_SERVER_ARGS_CPU�LLAMA_SERVER_PATH�LLAMA_SLOT_SAVE_DIR�	LLAMA_URL�
LLAMA_URL_CPU�MODEL_ID�MODEL_ID_CPU�PER_MESSAGE_OVERHEAD�PORT�PROMPT_PATH�REASONING_BUDGET�SEARXNG_URL�SELF_CHAT_MODE�SESSIONS_DIR�
SESSIONS_FILE�SHARE_BASE_URL�SHARES_FILE�TASKS_DB�	THEMES_DB�TOOL_FREE_AGENTS�TOOLS�TOOLS_TOKEN_COST�UPLOADS_DIR�VENV_PYTHON�VERIFY_FETCH_CHARS�VERIFY_MAX_CITES_PER_URL�VERIFY_RETRIES�build_sys_content)�APP_STATE_NAMES�Handler�
set_app_state).�ACTIVE_WINDOW_SECONDS�AUTO_COMPACT_THRESHOLD�MAX_INPUT_TOKENS�MAX_QUEUE_SIZE�MAX_TOOL_ROUNDS�RAM_EVAC_THRESHOLD�RAM_RESUME_THRESHOLD�TEMP_THRESHOLD_OFF�TEMP_THRESHOLD_ON�_active_tokens�
_agent_tokens�_agent_users�_client_location�_cpu_last_llm_use�_cpu_model_status�_current_task_ids�
_data_lock�_effective_contexts�_effective_contexts_lock�_event_queue�	_gpu_temp�_image_queue�
_last_llm_use�	_last_tps�
_llm_pools�_location_events�_model_transition_lock�_overheated�_queue_conds�_queue_locks�_ram_evacuating�_slot_checkpoints�_slot_kv_dirty�_task_queues�_tokens_lock�_tool_pools�_user_last_seen�_user_last_seen_lock�_users_cache�_users_cache_time�model_status�register_entrypoint�sessions�
sessions_meta�shares�tasks)�	_db_fetch�
_db_fetch_one�_db_run�_init_tasks_db�handle_task_tool�
task_complete�task_create�task_delete�task_get�	task_list�task_update)�_init_themes_db�handle_theme_tool)�_safe_username�active_users�get_current_identity�get_current_user�get_user_context_path�read_user_context�write_user_context)�_load_extra_prompts�_prepare_session�
_session_file�_session_meta_from�
load_sessions�
save_sessions)�create_share�	get_share�list_shares�load_shares�revoke_share�save_shares)
�_image_to_data_url�_latest_read_image_url�_reference_historical_images�_summarize_with_llm�_text_tokens�compact_messages_copy�context_token_report�effective_token_estimate�estimate_tokens�prepare_context_for_llm�resolve_image_path�
strip_html�trim_messages_for_context)�_consult_worker�_inject_read_image�_llm_worker�_start_llm_round�active_model_id�consult_expert_model�is_llama_alive�load_llama_model�mark_slot_kv_dirty�restore_slot_checkpoint�save_slot_checkpoint�server_base�server_last_use�server_model_id�
server_status�
server_url�	task_mode�unload_llama_model)�_dispatch_tool�_tool_worker�
fetch_page�
web_search)	�_enqueue_image_job�_image_url_rel�
_image_worker�
_input_dir�_output_dir�_output_rel�
edit_image�free_comfyui_vram�generate_image)�_cpu_lane_needed�_ensure_llama_server_for_task�
_evacuate_ram�_idle_unload_loop�_reminder_loop�_thermal_monitor�_connection_manager�ensure_comfyui_running�ensure_llama_server�get_gpu_temp�
get_ram_usage�kill_comfyui�kill_llama_server�model_status_snapshot�restart_llama_server�restart_servers)�_delete_task_image�_event_loop�_event_post�_finalize_task�_human_priority_active�
_queue_worker�_set_task_error�_task_max_rounds�
_task_user�location_str�set_client_location�
set_status)�extract_citations�run_verification�run_verification_workerzPrompt:
zP********************************************************************************�
�__main__)�exist_okz/health�)�timeout��zhealth check failedz%[startup] GPU llama-server is runningu8[startup] GPU llama-server not reachable — starting...)r�i-i.z[startup] SearXNG is runningzstatus z-[startup] ERROR: SearXNG is not reachable at z (z%). Web search will not work. Exiting.�)�target�daemon)�gpu)r��argsr�)�cpuz$Chat UI running on http://localhost:(�__doc__�http.server�http�json�os�re�glob�uuid�base64�requests�
subprocess�time�random�	threading�sys�io�tempfile�queue�
_queue_mod�stdout�reconfigurer�urllib.parserr�server.read_filer�
server.configrr	r
rrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9�
server.apir:r;r<�path�insert�server.features.stater=r>r?r@rArBrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]r^r_r`rarbrcrdrerfrgrhrirj�server.features.tasks_dbrkrlrmrnrorprqrrrsrtru�server.features.themes_dbrvrw�server.features.usersrxryrzr{r|r}r~�server.features.sessionsrr�r�r�r�r��server.features.sharesr�r�r�r�r�r��server.features.contextr�r�r�r�r�r�r�r�r�r�r�r�r��server.features.llmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��server.features.toolsr�r�r�r��server.features.imagesr�r�r�r�r�r�r�r�r��server.features.monitoringr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��server.features.orchestrationr�r�r�r�r�r�r�r�r�r�r�r��server.features.criticr�r�r��modules�__name__�SYS_CONTENT�print�globals�makedirs�get�r�status_code�	Exception�e�exit�Thread�start�server�
HTTPServer�s�
serve_forever�KeyboardInterrupt�shutdown)�names0�
chat-webui.py�<module>r sH���L�L�L�L�L�L�L�L��
�
���d��+��+�+�3�3�3�3�3�3�3�3�3�3�3�3�3�j?�>�
�������;��/�/�/�/�/�/�/�/�/�/�/�/�b�����
����������� �����(��
�
�
������&
�
�
�
����C�K�K��)�*������!���k�8�T�;��h�?�
��A��t�W�Y�t�_�$�A�B��z���B�K�K��d�+��O��M���H�L�L�J�<�w�/��;���=�=�C���1�2�2�
�5�6���H�L�L��a�0���=�=�O�+��0�1��g�a�m�m�_�5�6�6�
2��I���K��5�;�;�=��I���M���F�L�L�N��I���M���F�L�L�N��I���M�$�7�=�=�?��I���-�d�;�A�A�C��I���,�T�:�@�@�B��I���N�4�8�>�>�@��I���/��=�C�C�E�	�0���
7�8�������d�|�W�5�A��	����G��B����
�H�I�������
�=�k�]�"�Q�C�Ot�u�v�����������$��	�
�
���sC�)S�,;S�(AS4�?T0�S1�0S1�4T-�;#T&�&T-�0U�
U