+
    ~j                        ^ RI Ht ^ RIt^ RIHtHt ^ RIHtHt ]'       d   ^RI	H
t
 ] ! R R4      4       t ! R R	4      tR# )
    )annotationsN)	dataclassfield)TYPE_CHECKINGAny)EvaluationResultc                  V    ] tR t^t$ RtR]R&   ]! ]P                  R7      tR]R&   Rt	R# )	_TagEntryNdict[str, Any] | Nonemetadata)default_factoryfloat	timestamp )
__name__
__module____qualname____firstlineno__r   __annotations__r   timer   __static_attributes__r       q/Users/mitch_tango/dev/rabbit-r1-livekit/agent/.venv/lib/python3.14/site-packages/livekit/agents/observability.pyr
   r
      s     &*H#*TYY7Iu7r   r
   c                      ] tR t^tRtR R ltRR R lltRR R lltR	R/R
 R lltR R lt	]
R R l4       t]
R R l4       t]
R R l4       t]
R R l4       tR R ltRtR# )Taggera  Tag sessions with metadata for observability.

The Tagger allows adding string tags (key:value format) with optional
structured metadata to sessions. Tags and metadata are uploaded to
LiveKit Cloud at session end.

Example:
    ```python
    # Mark session as successful
    ctx.tagger.success(reason="Task completed successfully")

    # Mark session as failed
    ctx.tagger.fail(reason="User hung up before completing booking")

    # Add custom tags
    ctx.tagger.add("voicemail:true")
    ctx.tagger.add("language:es")

    # Add tags with structured metadata
    ctx.tagger.add(
        "appointment:booked",
        metadata={"slot_id": "abc123", "calendar": "cal.com"},
    )

    # Remove a tag
    ctx.tagger.remove("voicemail:true")
    ```
c                   V ^8  d   QhRR/# )   returnNoner   )formats   "r   __annotate__Tagger.__annotate__/   s     0 0$ 0r   c                	0    / V n         . V n        R V n        R # N)_tags_evaluation_results_outcome_reasonselfs   &r   __init__Tagger.__init__/   s    +-
9; +/r   Nc                    V ^8  d   QhRRRR/# r   reason
str | Noner   r   r   )r    s   "r   r!   r"   4   s     	& 	&j 	&D 	&r   c                x    V P                   P                  RR4       \        4       V P                   R&   Wn        R# )zuMark the session as successful.

Args:
    reason: Optional reason for the success (stored separately from the tag).
lk.failN
lk.successr%   popr
   r'   r)   r.   s   &&r   successTagger.success4   s,     	

y$'#,;

< %r   c                    V ^8  d   QhRRRR/# r-   r   )r    s   "r   r!   r"   ?   s     	& 	&: 	& 	&r   c                x    V P                   P                  RR4       \        4       V P                   R&   Wn        R# )zqMark the session as failed.

Args:
    reason: Optional reason for the failure (stored separately from the tag).
r2   Nr1   r3   r5   s   &&r   failTagger.fail?   s,     	

|T* )

9%r   r   c               $    V ^8  d   QhRRRRRR/# )r   tagstrr   r   r   r   r   )r    s   "r   r!   r"   J   s"     7 7s 7)> 7$ 7r   c               8    \        VR7      V P                  V&   R# )zAdd a tag to the session with optional structured metadata.

Args:
    tag: The tag string in "key:value" format (e.g., "voicemail:true", "language:es").
    metadata: Optional dict of structured metadata associated with this tag.
)r   N)r
   r%   )r)   r=   r   s   &&$r   add
Tagger.addJ   s     $X6

3r   c                    V ^8  d   QhRRRR/# )r   r=   r>   r   r   r   )r    s   "r   r!   r"   S   s     " "# "$ "r   c                >    V P                   P                  VR4       R# )zIRemove a tag from the session.

Args:
    tag: The tag string to remove.
N)r%   r4   )r)   r=   s   &&r   removeTagger.removeS   s     	

sD!r   c                   V ^8  d   QhRR/# )r   r   zset[str]r   )r    s   "r   r!   r"   \   s     & &h &r   c                H    \        V P                  P                  4       4      # )zAll current tag strings.)setr%   keysr(   s   &r   tagsTagger.tags[   s     4::??$%%r   c                   V ^8  d   QhRR/# )r   r   zlist[dict[str, Any]]r   )r    s   "r   r!   r"   a   s     / /1 /r   c                6    V P                   P                  4       # )zAll evaluation results.)r&   copyr(   s   &r   evaluationsTagger.evaluations`   s     '',,..r   c                   V ^8  d   QhRR/# r   r   r/   r   )r    s   "r   r!   r"   f   s       r   c                R    RV P                   9   d   R# RV P                   9   d   R# R# )z;The session outcome: 'success', 'fail', or None if not set.r2   r6   r1   r:   N)r%   r(   s   &r   outcomeTagger.outcomee   s%     4::%$**$r   c                   V ^8  d   QhRR/# rR   r   )r    s   "r   r!   r"   o   s     $ $
 $r   c                    V P                   # )z#Reason for success/failure outcome.)r'   r(   s   &r   outcome_reasonTagger.outcome_reasonn   s     ###r   c                    V ^8  d   QhRRRR/# )r   resultr   r   r   r   )r    s   "r   r!   r"   s   s      "2 t r   c                $   VP                   P                  4        Fq  w  r#RV RVP                   2p\        4       V P                  V&   V P
                  P                  RVRVRVP                  RVP                  RVP                  /4       Ks  	  R# )	zmTag the session with evaluation results (internal use only).

Called automatically by JudgeGroup.evaluate().
z	lk.judge.:namer=   verdict	reasoninginstructionsN)		judgmentsitemsr_   r
   r%   r&   appendr`   ra   )r)   r[   r^   judgmentr=   s   &&   r   _evaluationTagger._evaluations   s    
 %..446NDdV1X%5%5$67C'kDJJsO$$++D3x//!3!3"H$9$9 7r   )r&   r'   r%   r$   )r   r   r   r   __doc__r*   r6   r:   r@   rD   propertyrJ   rO   rT   rX   rf   r   r   r   r   r   r      s    :0
	&	&7 7" & & / /   $ $ r   r   )
__future__r   r   dataclassesr   r   typingr   r   evalsr   r
   r   r   r   r   <module>rn      s<    "  ( %' 8 8 8
r rr   