
    yj[                     P    d Z ddlmZ ddlmZ ddlmZ  G d de          ZdgZdS )z
Representation events for Honcho telemetry.

Representation tasks extract conclusions from messages to build peer
representations. These events track the processing of message batches
and the conclusions extracted from them.
    )ClassVar)Field)	BaseEventc                      e Zd ZU dZdZee         ed<   dZee	         ed<   dZ
ee         ed<    edd	
          Zeed<    edd
          Zeed<    edd
          Zeed<    edd
          Ze	ed<    edd
          Zeed<    edd
          Zeed<    edd
          Ze	ed<    edd
          Ze	ed<    edd
          Zeed<    edd
          Zeed<    edd
          Zeed<    edd 
          Ze	ed!<    edd"
          Ze	ed#<    edd$
          Ze	ed%<    ed&d'(          Ze	ed)<    ed&d*(          Ze	ed+<    ed&d,(          Ze	ed-<    ed&d.(          Ze	ed/<    ed&d0(          Ze	ed1<    ed&d2(          Z e	ed3<    ed&d4(          Z!e	ed5<    ed&d6(          Z"e	ed7<    ed8d9(          Z#e$ed:<    ed8d;(          Z%e$ed<<    ed8d=(          Z&e$ed><    ed&d?(          Z'e	ed@<   dAefdBZ(dCS )DRepresentationCompletedEventa  Emitted when a representation task completes processing a message batch.

    Representation tasks extract conclusions from messages to build peer
    representations. This event captures the full context of what was processed
    and what was extracted.
    zrepresentation.completed_event_type   _schema_versionrepresentation	_category.zWorkspace name)descriptionworkspace_namezSession namesession_namezObserved peer nameobservedz2Number of QueueItem records dequeued and processedqueue_items_processedzFirst message ID in batchearliest_message_idzLast message ID in batchlatest_message_idzNumber of messages processedmessage_countz(Number of explicit conclusions extractedexplicit_conclusion_countzTime spent preparing contextcontext_preparation_mszTime spent in LLM callllm_call_mszTotal processing timetotal_duration_msu   Queued-message tokens (the ones we're actually reasoning ABOUT). This field is the downstream metering key for representation.completed — DO NOT rename or repurpose without coordinating with downstream consumers.input_tokensz@Total tokens sent to the LLM (queued + extra context + scaffold)total_input_tokenszOutput tokens generatedoutput_tokensr   zVNumber of messages in this batch that were the actual queue items being reasoned about)defaultr   queued_message_countuD   Total messages in the prompt — queued + extra interleaving contextprompt_message_countz4Sum of token_count across all messages in the promptprompt_message_tokenszTprompt_message_count - queued_message_count: the extra-context messages we pulled inextra_context_message_countzEprompt_message_tokens - input_tokens: token cost of the extra contextextra_context_tokensz>Estimated tokens for the system/scaffold portion of the promptprompt_scaffold_tokensz>settings.DERIVER.REPRESENTATION_BATCH_MAX_TOKENS at fetch timebatch_max_tokensz.settings.DERIVER.MAX_INPUT_TOKENS at call timemax_input_tokensFz5settings.DERIVER.FLUSH_ENABLED snapshot at batch timewas_flush_enabledzETrue when the queue batcher clamped the batch to fit batch_max_tokenshit_batch_token_capzHTrue when the LLM call truncated input messages to fit max_input_tokens.hit_input_token_capz9Number of observers this representation was saved againstobserver_countreturnc                 4    | j          d| j         d| j         S )zKResource ID includes workspace, session, and latest message for uniqueness.:)r   r   r   )selfs    K/DATA/AppData/hermes/projects/honcho/src/telemetry/events/representation.pyget_resource_idz,RepresentationCompletedEvent.get_resource_id   s'    %TT(9TTD<RTTT    N))__name__
__module____qualname____doc__r   r   str__annotations__r
   intr   r   r   r   r   r   r   r   r   r   r   floatr   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   boolr&   r'   r(   r.    r/   r-   r   r      s          "<K#;;;%&OXc]&&&/Ix}///  %1ABBBNCBBB c~>>>L#>>> E#+?@@@Hc@@@ "'M" " "3   
  %uS6QRRRRRR"U34NOOOsOOOs0NOOOM3OOO &+UC& & &s   
 %*E7% % %E    s0HIIIKIII$uS6MNNNuNNN 6  L#    $eV      s0IJJJM3JJJ !&l! ! !#    !&Z! ! !#    "'J" " "3    (-uj( ( (    !&[! ! !#    #(%T# # #C    "ET  c    "EO  c    $eK  t    !&[! ! !    !&V! ! !     %O  NC   
U U U U U U Ur/   r   N)	r3   typingr   pydanticr   src.telemetry.events.baser   r   __all__r9   r/   r-   <module>r>      s                 / / / / / /wU wU wU wU wU9 wU wU wUt *
*r/   