
    jKj                        d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ ddlmZ d	Z	 d	 	 	 	 	 dd
ZddZ	 	 	 	 	 	 	 	 	 	 ddZddZddZddZy)u7  Optional ``conversation_id`` loop-back. When enabled, the SDK injects a
``conversation_id`` parameter into every tool, mints one when the agent doesn't
supply it, appends a prompt-back asking the agent to echo it on later calls, and
captures it as ``$mcp_conversation_id`` — stitching calls across reconnects.    )annotationsN)AnyDictOptionalTuple   )#DEFAULT_CONVERSATION_ID_DESCRIPTION)_uuid7)logconversation_idc                   | }|rBt        |j                  d      t              r#t        |d   v rt	        d| dt         d       |S |rD|j                  d      s"|j                  d      s|j                  d      rt	        d| d       |S |sd	i g d
}t        j                  |      }t        |j                  d      t              si |d<   |j                  d      du r|j                  dd       dt        d|d   t        <   |S )zReturn a new JSON Schema with an optional ``conversation_id`` string property.
    Skips schemas that already define it or use ``oneOf``/``allOf``/``anyOf``.
propertieszWARN: Tool "z" already has 'z'. Skipping injection.oneOfallOfanyOfz9" has complex schema. Skipping conversation_id injection.object)typer   requiredadditionalPropertiesFNstring)r   description)	
isinstancegetdictCONVERSATION_ID_PARAM_NAMEr   copydeepcopypopr	   )input_schema	tool_nameschemas      m/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/posthog/mcp/_conversation_id.pyadd_conversation_id_to_schemar#      s   
 Fvzz,/6&&*>>I;&67Q6RRhi	
 6::g&&**W*=GAT9+%^_	
 """E]]6"Ffjj.5!|zz()U2

)40:8F<34 M    c                    t        | t              sy | j                  t              }t        |t              sy |j                         }|xs d S )N)r   r   r   r   strstrip)argsvaluetrimmeds      r"   extract_conversation_idr+   9   s@    dD!HH/0EeS!kkmG?dr$   c                L    | r||k(  ryt        |      }|r|dfS t               dfS )u   Return ``(conversation_id, minted)``. Disabled or get_more_tools → ``(None, False)``;
    agent supplied → ``(value, False)``; agent omitted → ``(new uuid, True)``.)NFFT)r+   r
   )enabledr(   r    missing_capability_tool_namesupplieds        r"   resolve_conversation_idr0   C   s5     i#??&t,H8T>r$   c                    t        | t              sy| j                  d      du ryt        | j                  d      t              S )NFisErrorTcontent)r   r   r   list)results    r"   can_inject_prompt_backr6   S   s9    fd#zz)$fjj+T22r$   c                    dd|  ddS )Ntextz [SERVER]: Reuse conversation_id=z on every subsequent tool call in this conversation. Required for the server to correlate calls and provide context-aware results.)r   r8    )r   s    r"   build_prompt_backr:   [   s$    ..? @j j r$   c                L    t        |       s| S i | dg | d   t        |      iS )Nr3   )r6   r:   )r5   r   s     r"   inject_prompt_backr<   e   sA    !&)
KVI&K(9/(JK r$   )unknown)r   Optional[Dict[str, Any]]r    r&   returnr>   )r(   r   r?   Optional[str])
r-   boolr(   r   r    r@   r.   r&   r?   zTuple[Optional[str], bool])r5   r   r?   rA   )r   r&   r?   zDict[str, Any])r5   r   r   r&   r?   r   )__doc__
__future__r   r   typingr   r   r   r   	constantsr	   _idsr
   loggerr   r   r#   r+   r0   r6   r:   r<   r9   r$   r"   <module>rH      s   
R
 #  - - :  .  >G * 7:  F
  #&	
   3r$   