
    jKj                        d Z ddlm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 ddlmZ d	gZdd
ZddZ	 	 	 	 	 	 ddZy)zSession id resolution: prefer a transport-supplied MCP session id (derived
deterministically so it survives restarts) over an SDK-generated one, which
rolls over after an inactivity timeout.    )annotations)datetimetimezone)Optional   )INACTIVITY_TIMEOUT_IN_MINUTES)deterministic_prefixed_idnew_prefixed_id)MCPAnalyticsData"derive_session_id_from_mcp_sessionc                     t        d      S )Nses)r
        d/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/posthog/mcp/session.pynew_session_idr      s    5!!r   c                    t        d|       S )zDeterministic SDK session id for an MCP protocol session, so the same MCP
    session correlates to one ``$session_id`` across server restarts.r   )r	   )mcp_session_ids    r   r   r      s     %UN;;r   c                  K   | j                   4 d{    t        j                  t        j                        }|rBt        |      | _        || _        d| _        || _	        | j                  cddd      d{    S | j                  dk(  r0| j                  r$|| _	        | j                  cddd      d{    S t        dz  }|| j                  z
  j                         |kD  rt               | _        d| _        || _	        | j                  cddd      d{    S 7 7 7 m7 # 1 d{  7  sw Y   yxY ww)zResolve the session id for a request. Mutates per-server state under a lock
    so concurrent async requests can't race on session rotation.Nmcp<   	generated)session_lockr   nowr   utcr   
session_idlast_mcp_session_idsession_sourcelast_activityr   total_secondsr   )datar   r   timeout_secondss       r   resolve_session_idr#      s     
    ll8<<(@PDO'5D$"'D!$D?? !   %'D,D,D!$D?? !    8"<$$$$335G,.DO"-D + !        s   D?D!D?AD*-D?9D$:D??-D*,D?8D&9D?>AD*D?D(D?$D?&D?(D?*D<0D31D<8D?N)returnstr)r   r%   r$   r%   )r!   r   r   zOptional[str]r$   r%   )__doc__
__future__r   r   r   typingr   	constantsr   _idsr	   r
   	_internalr   __all__r   r   r#   r   r   r   <module>r-      sM   
+ # '  4 < '/
0"<
,9r   