
    g/j~                        d Z ddlmZ ddlZddlZddlZddlmZ ddl	Z	 ee
      j                         j                  Zedz  Zd Zedk(  r e        yy)a&  Simple HTTP server for the BetterBrain Trends Dashboard.

Serve la cartella della dashboard + la cartella data.
Accessibile via Tailscale IP del Mac mini.

Run:
    cd ~/agents && uv run python -m projects.symetrics_trends.betterbrain.server

Default bind 0.0.0.0:8765 (config in config.yaml).
    )annotationsN)Pathzconfig.yamlc                    t        t              5 } t        j                  |       }d d d        j	                  di       }|j	                  dd      }t        |j	                  dd            }t         G fddt        j                  j                        }dt        j                  _        t        j                  ||f|      5 }t        d	| d
|        t        d        t        d| d       t        d| d       t        d       	 |j                          d d d        y # 1 sw Y   xY w# t        $ r t        d       Y ,w xY w# 1 sw Y   y xY w)Nserverhostz0.0.0.0porti="  c                  2     e Zd Z fdZ fdZd Z xZS )main.<locals>.Handlerc                :    t        |   |dt              i| y )N	directory)super__init__str)selfargskwargs	__class__	serve_dirs      D/Users/sandro/agents/projects/symetrics_trends/betterbrain/server.pyr   zmain.<locals>.Handler.__init__%   s    GdGc)nGG    c                    | j                   j                  d      sd| j                   v r6| j                  dd       | j                  dd       | j                  dd       t        |           y )	Nzlatest.jsonzdata/zCache-Controlzno-store, must-revalidatePragmazno-cacheExpires0)pathendswithsend_headerr   end_headers)r   r   s    r   r   z!main.<locals>.Handler.end_headers(   s\    yy!!-0Gtyy4H  2MN  :6  C0G!r   c                r    t         j                  j                  d| j                          d||z   d       y )Nz	[server] z - 
)sysstderrwriteaddress_string)r   formatr   s      r   log_messagez!main.<locals>.Handler.log_message0   s2    JJy)<)<)>(?s6D=/QSTUr   )__name__
__module____qualname__r   r   r&   __classcell__)r   r   s   @r   Handlerr
   $   s    	H	"	Vr   r+   Tz1[server] Serving BetterBrain Trends Dashboard on :z[server] Document root: z.[server] Dashboard URL: http://<TAILSCALE_IP>:z/dashboard/z.[server] Data URL:      http://<TAILSCALE_IP>:z/data/latest.jsonz[server] Ctrl+C to stop.z
[server] Stopped.)openCONFIG_PATHyaml	safe_loadgetintHEREhttpr   SimpleHTTPRequestHandlersocketserver	TCPServerallow_reuse_addressprintserve_foreverKeyboardInterrupt)fcfg
server_cfgr   r   r+   httpdr   s          @r   mainr@      s3   	k	annQ 
2&J>>&),Dz~~fd+,D IV$++66 V  26L.			tg	6%A$qOP(45>tfKPQ>tfDUVW(*	)! 
7	65 
	D ! 	)'(	) 
7	6s6   D)A	ED6)D36E
EEEE__main__)__doc__
__future__r   http.serverr4   r6   r!   pathlibr   r/   __file__resolveparentr3   r.   r@   r'    r   r   <module>rJ      s\   	 #   
   H~&&]"$)N zF r   