
    jj	                        d Z ddlmZ ddlmZ ddlZddlmZ ed         ZdZ	ddddd	d	d
d
d
d
d
Z
 ed           G d d                      ZddZddZddZdS )zParse human approval commands from Telegram review messages.

The bot never publishes on vague consent. Ambiguous commands return
``needs_clarification`` so the orchestrator can ask once instead of posting.
    )annotations)	dataclassN)Literal)approverejectchange_requestneeds_clarification)youtubetiktok	instagramr
   r   r   )
r
   ytshortszyoutube shortsr   ztik tokr   instareelszinstagram reelsT)frozenc                  6    e Zd ZU ded<   dZded<   dZded<   dS )	ApprovalDecisionApprovalActionaction tuple[str, ...]	platformsNz
str | Noner   )__name__
__module____qualname____annotations__r   r   r       U/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/autoshorts/review/approvals.pyr   r      s@         !#I####!%N%%%%%%r   r   commandstrreturnc                    d                     | pd                                                                                                          S )N  )joinstripcasefoldsplit)r   s    r   _normalize_textr)   %   s<    88W]))++4466<<>>???r   textr   c                Z    | dv rt           S t                              |           }|r|fS dS )N>   allalleallesr   )ALL_PLATFORMS_PLATFORM_ALIASESget)r*   platforms     r   _platform_from_textr3   )   s<    ''' $$T**H {2r   c                *   | pd                                 }t          |          }|dv rt          d          S t          j        d|t          j                  }|rJ|                    d                                           }|rt          d|	          S t          d
          S t          j        d|          }|rGt          |                    d                                                     }|rt          d|          S t          d
          S )u  Parse a Telegram approval command into a deterministic decision.

    Supported user-facing commands:
    - ``Freigabe alle``
    - ``Freigabe YouTube`` / ``Freigabe TikTok`` / ``Freigabe Instagram``
    - ``Ablehnen``
    - ``Ändern: <requested change>``
    r$   >   r   ablehnen	abgelehntr   )r   u'   ^(?:ändern|aendern|change)\s*:\s*(.+)$)flags   r   )r   r   r	   z^(?:freigabe|approve)\s+(.+)$r   )r   r   )r&   r)   r   rematch
IGNORECASEgroupr3   )r   raw
normalizedchange_matchchange_textapproval_matchr   s          r   parse_approval_commandrB   2   s$    =b


!
!C %%J888x00008FSUS`aaaL >"((++1133 	Y#+;KXXXX'<====X>
KKN K'(<(<Q(?(?(E(E(G(GHH	 	K#9	JJJJ#89999r   )r   r    r!   r    )r*   r    r!   r   )r   r    r!   r   )__doc__
__future__r   dataclassesr   r9   typingr   r   r/   r0   r   r)   r3   rB   r   r   r   <module>rG      s    # " " " " " ! ! ! ! ! ! 				      UV2
"   $& & & & & & & &@ @ @ @   : : : : : :r   