
    .`i                         d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
  G d de          Zded	ee         d
edz  dedee	dz  ef         f
dZdS )z
Harmony-specific streaming delta extraction for chat completions.

This module handles the extraction of DeltaMessage objects from
harmony parser state during streaming chat completions.
    )
NamedTuple)StreamableParser)make_tool_call_id)DeltaFunctionCallDeltaMessageDeltaToolCallc                   :    e Zd ZU edz  ed<   edz  ed<   eed<   dS )
TokenStateNchannel	recipienttext)__name__
__module____qualname__str__annotations__     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/vllm/entrypoints/openai/chat_completion/stream_harmony.pyr
   r
      s9         4ZTz
IIIIIr   r
   harmony_parsertoken_statesprev_recipientNinclude_reasoningreturnc                    |sdS d}g }|d         j         }|d         j        }|d         j        }t          dt	          |                    D ]d}	||	         }
|
j         |k    r|
j        |k    r||
j        z  }+|                    t          |||                     |
j         }|
j        }|
j        }e|                    t          |||                     d}d}d}g }d}d}| j        D ]>}|j         dk    s|j         dk    r&|j        r|j                            d	          r|dz  }?|r|                    d	          r|dz   }|}n|}d}|D ]M}|j         d
k    r||j        z  }d}|j         dk    s|j         dk    r|j        r|j                            d	          rd}||j        k    rp|j        	                    d	d          d         }|                    t          t                      dt          |d          |                     d}|j        }|dz  }|j        rE|r|dz
  }n||n|}|                    t          |t          |j                                       |j         dk    r||j        z  }d}6|j         dk    r|r
||j        z  }O|s|s|r&i }|r||d<   |r||d<   |r||d<   d}t          di |}nd}||fS )a  
    Extract a DeltaMessage from harmony parser state during streaming.

    Args:
        harmony_parser: The StreamableParser instance tracking parse state
        token_states: List of TokenState tuples for each token
        prev_recipient: Previous recipient for detecting tool call transitions
        include_reasoning: Whether to include reasoning content

    Returns:
        A tuple of (DeltaMessage or None, tools_streamed_flag)
    )NFFr      N 
commentaryanalysisz
functions.finalTfunction)name	arguments)idtyper!   index)r#   )r&   r!   content	reasoning
tool_callsr   )r   r   r   rangelenappendr
   messages
startswithsplitr   r   r   r   )r   r   r   r   tools_streamedgroupscurrent_channelcurrent_recipientcurrent_textistatedelta_messagecombined_contentcombined_reasoningtool_messagescontent_encountered
base_indexmsgnext_tool_indexongoing_tool_indexgroupopened_new_call	tool_nametool_call_indexdelta_kwargss                            r   extract_harmony_streaming_deltarE      s   &  {N  "F"1o-O$Q1?'L1c,''(( & &Q=O++CT0T0TEJ&LLMM*_6GVVWWW#mO % :LL
MM*_.?NNOOO MM J&  [L((CK:,E,E -F((66 -F !OJ  ".33LAA "$q.' %! 7- 7-=G##
*"&]l**emz.I.I /J**<88 /J $O00!O11,BB1E	$$!,..'!2!*&(" " " .  
 
 
 #'!&1$z " &5&9OO .9 +*' $
 $$!-!2UZ!H!H!H     ]l**
*"&]j((->(%*,  0 M =? 	7&6L# 	;(:L% 	")6L&!N$44|44.((r   )__doc__typingr   openai_harmonyr   vllm.entrypoints.chat_utilsr   'vllm.entrypoints.openai.engine.protocolr   r   r   r
   listr   booltuplerE   r   r   r   <module>rN      s          + + + + + + 9 9 9 9 9 9                O)$O)z"O) $JO) 	O)
 <$$%O) O) O) O) O) O)r   