
    Ɓ~jF                        d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ  ej        e          Z G d d	e          ZddZdddZddZdS )u  Voice profile loader.

The comedian's voice profile is a JSON file loaded at runtime from
`VOICE_PROFILES_DIR/<comedian_id>.json`. No voice-profile artifact existed in
the workstation prior to this repo, so a baseline `max-amini.json` is seeded
in `voice_profiles/`.

In a later phase the director can be pointed at any external artifact by
changing `VOICE_PROFILES_DIR` — the loader interface does not change.
    )annotationsN)Path)Any)settings)VoiceProfilec                      e Zd ZdS )VoiceProfileNotFoundN)__name__
__module____qualname__     i/Users/abstractioneditor2/ai-workstation/projects/automation/show-city-briefing-agent/app/voice/loader.pyr	   r	      s        Dr   r	   returnr   c                 X    t          t          j                                                  S N)r   r   VOICE_PROFILES_DIRresolver   r   r   _resolve_dirr      s    +,,44666r   comedian_id
str | Noner   c                   | pt           j        } t                      }||  dz  }|                                s-t                              d|           t          d|           t          j        |	                    d                    }|
                    d|            |                    dd            t          j        |          S )Nz.jsonzvoice profile not found: %szvoice profile not found: zutf-8)encodingr   id)r   DEFAULT_COMEDIAN_IDr   is_fileloggererrorr	   jsonloads	read_text
setdefaultpopr   model_validate)r   	directorypathraws       r   load_voice_profiler(   !   s    =!=KI+,,,,D<<>> G2D999"#Et#E#EFFF*T^^W^%E%EFFCNN=+...GGD$&s+++r   	list[str]c                     t                      } |                                 sg S d |                     d          D             S )Nc                D    g | ]}|                                 |j        S r   )r   stem).0ps     r   
<listcomp>z,available_voice_profiles.<locals>.<listcomp>3   s'    DDDq		DAFDDDr   z*.json)r   is_dirglob)r%   s    r   available_voice_profilesr2   /   sD    I 	DDINN844DDDDr   )r   r   r   )r   r   r   r   )r   r)   )__doc__
__future__r   r   loggingpathlibr   typingr   
app.configr   
app.modelsr   	getLoggerr
   r   FileNotFoundErrorr	   r   r(   r2   r   r   r   <module>r<      s  	 	 # " " " " "                     # # # # # #		8	$	$	 	 	 	 	, 	 	 	7 7 7 7, , , , ,E E E E E Er   