
    Ƌjb                    B   d Z ddlmZ ddlZddlmZmZ ddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZmZmZ dd	lmZ dd
lmZ er2ddlmZ ddlmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z#m$Z$ ddl%m&Z&m'Z'  G d de      Z( G d de      Z) G d de      Z* G d d      Z+y)z=Weekly scheduling, dispatch, and mutable-authority host seam.    )annotationsN)MappingSequence)datedatetime)Path)TYPE_CHECKINGClassVar)	BaseModel
ConfigDict
StrictBool)PlatformConfig)TelegramWeeklyHostError)WeeklyOperationsSchedulePolicy)WeeklyOperationsCoordinatorWeeklyOperationsTask)TelegramReminderDeliveredTelegramReminderRejected)WeeklyOperationsTickSnapshot)TelegramEditOutcome)WeeklyReminderCoordinatorWeeklyReminderTask)	JsonValueWeeklyExplanationModelc                  :    e Zd ZU  edd      Zded<   dZded<   y	)
_WeeklyToggleignoreTextrastrictClassVar[ConfigDict]model_configFr   enabledN)__name__
__module____qualname__r   r"   __annotations__r#        n/home/cube/projects/richard/.worktrees/nutricoach-v140-impl/gateway/platforms/telegram_weekly_host_dispatch.pyr   r   ,   s    )3(4)PL&PGZr)   r   c                  :    e Zd ZU  edd      Zded<   dZded<   y)	_NutritionToggler   Tr   r!   r"   Nz_WeeklyToggle | Noneweekly_operations)r$   r%   r&   r   r"   r'   r-   r(   r)   r*   r,   r,   1   s     )3(4)PL&P.2+2r)   r,   c                  :    e Zd ZU  edd      Zded<   dZded<   y)	_ToggleEnveloper   Tr   r!   r"   Nz_NutritionToggle | Nonenutrition_coaching)r$   r%   r&   r   r"   r'   r0   r(   r)   r*   r/   r/   6   s     )3(4)PL&P26/6r)   r/   c                  &   e Zd ZU dZdZded<   dZded<   dZded<   dZd	ed
<   ddZ	ddZ
ddZ	 	 	 	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 ddZ	 	 	 	 	 	 	 	 ddZ	 	 ddZ	 	 	 	 	 	 	 	 d dZ	 	 	 	 	 	 	 	 d!dZ	 	 	 	 	 	 d"dZ	 	 	 	 d#dZ	 	 	 	 d$dZy)%TelegramWeeklyDispatchMixinz?Host the enabled dispatcher without growing the legacy adapter.NPlatformConfig | None_weekly_platform_config
str | None_task26_candidate_digestzbool | None_task26_service_revokedzWeeklyExplanationModel | None$_weekly_operations_explanation_modelc                    | j                   S N)r4   selfs    r*   _current_weekly_configz2TelegramWeeklyDispatchMixin._current_weekly_configC   s    +++r)   c                8    | j                   }|t        d      |S )Nz1Telegram weekly revocation state was not injected)r7   r   )r<   revokeds     r*   _current_weekly_service_revokedz;TelegramWeeklyDispatchMixin._current_weekly_service_revokedF   s)    ..?)C  r)   c                    | j                   S r:   )r6   r;   s    r*    _current_weekly_candidate_digestz<TelegramWeeklyDispatchMixin._current_weekly_candidate_digestN   s    ,,,r)   c                    K   |||f}t         wr:   NotImplementedError)r<   chat_idtopic_idtext_s        r*   send_weekly_reminderz0TelegramWeeklyDispatchMixin.send_weekly_reminderQ   s      Xt#!!   c                    K   |||f}t         wr:   rD   )r<   rF   
message_idrH   rI   s        r*   edit_weekly_topic59_outcomez7TelegramWeeklyDispatchMixin.edit_weekly_topic59_outcomeW   s      Z%!!rK   c                    t         r:   rD   r;   s    r*   _get_nutrition_coachingz3TelegramWeeklyDispatchMixin._get_nutrition_coaching]   s
     "!r)   c                   K   |||f}t         wr:   rD   )r<   profile_rootcoordinatorkst_daterI   s        r*   #_send_activation_completion_noticesz?TelegramWeeklyDispatchMixin._send_activation_completion_noticesb   s      +x/!!rK   c                   | j                         }|yt        j                  |j                  dd      }t        j                  |      }|j                  }|"|j                  |j                  j                  syddl	m
}  ||      S )zBAvoid importing profile scheduling while weekly operations is OFF.NT,:	sort_keys
separatorsr   )!configured_weekly_schedule_policy)r=   jsondumpsr   r/   model_validate_jsonr0   r-   r#   *gateway.platforms.telegram_weekly_reminderr]   )r<   configencodedenvelope	nutritionr]   s         r*   "_weekly_operations_schedule_policyz>TelegramWeeklyDispatchMixin._weekly_operations_schedule_policyl   s     ,,.>**LLDZ
 #66w?//	**2..66	
 199r)   c               B   K   ddl m}  || |||       d {   S 7 w)Nr   )send_weekly_operations_task	local_now)ra   rh   )r<   rS   taskrj   rh   s        r*   _send_weekly_operations_taskz8TelegramWeeklyDispatchMixin._send_weekly_operations_task   s-     	
 1+ty
 
 	
 
   c               B   K   ddl m}  || |||       d{   S 7 w)z3Dispatch enabled work before generic provider work.r   )dispatch_weekly_operations_tickri   N)-gateway.platforms.nutrition_weekly_dispatcherro   )r<   rS   tasksrj   ro   s        r*    _dispatch_weekly_operations_tickz<TelegramWeeklyDispatchMixin._dispatch_weekly_operations_tick   s-     	
 5+u	
 
 	
 
rm   c                >  K   ddl m} | j                         }t        ||      syt	        | j                  |||       d {         }|j                  | j                  |j                  ||j                                d {          t        |      S 7 V7 w)Nr   )r   )z2weekly operations coordinator contract unavailableri   )rT   )rp   r   rP   
isinstancelistrr   extendrU   rR   r   tuple)r<   rq   rj   r   rS   failuress         r*   _run_weekly_operations_dispatchz;TelegramWeeklyDispatchMixin._run_weekly_operations_dispatch   s     
	
 224+'BCJ77Ui 8  

 	::((") ;  	
 X
s%   A BBABBBBc                V    | j                   }|t        d      |j                  |      S )z=Invoke only an explicitly installed weekly explanation model.z*weekly explanation provider is unavailable)r8   OSErrorgenerate)r<   requestmodels      r*   generate_weekly_explanationz7TelegramWeeklyDispatchMixin.generate_weekly_explanation   s/     99=FGG~~g&&r)   c                   | j                         }|t        d      | j                         ryddlm}m} ddlm} 	  |t        j                  |j                  dd            }|y|\  }}| j                         |j                  j                  k(  xr  ||j                   k(  xr ||j"                  k(  S # t        t        ||f$ r Y yw xY w)	z@Reparse mutable host pins immediately before provider authority.z'Telegram weekly config was not injectedFr   )WeeklyOperationsAuthorityErrorWeeklyOperationsConfigError)configured_weekly_authorityTrW   rZ   )r=   r   r@   4gateway.platforms.nutrition_weekly_operations_configr   r   ra   r   r^   r_   r   	TypeError
ValueErrorrB   runtimecandidate_digestrb   receipt)r<   snapshotrb   r   r   r   	authorityr   s           r*   #weekly_operations_authority_currentz?TelegramWeeklyDispatchMixin.weekly_operations_authority_current   s     ,,.>)*STT//1	
	
	3

LLDZI #113001 ,(//), 8+++		
 *'	
 	 	s   (B7 7C
C)returnr3   )r   bool)r   r5   )rF   strrG   r5   rH   r   r   z4TelegramReminderDelivered | TelegramReminderRejected)rF   r   rM   r   rH   r   r   r   )r   z"WeeklyOperationsCoordinator | None)rR   r   rS   r   rT   r   r   tuple[str, ...])r   z%WeeklyOperationsSchedulePolicy | None)rS   r   rk   r   rj   r   r   r5   )rS   r   rq   Sequence[WeeklyOperationsTask]rj   r   r   r   )rq   r   rj   r   r   r   )r}   Mapping[str, JsonValue]r   r   )r   r   r   r   )r$   r%   r&   __doc__r4   r'   r6   r7   r8   r=   r@   rB   rJ   rN   rP   rU   rf   rl   rr   ry   r   r   r(   r)   r*   r2   r2   ;   sr   I5929+/j/+/[/JN(*GN,-""&0"8;"	="""(+"36"	""	+"
"" 1"
 " 
":	.:0
.
 !

 
 


0
 .

 
 

 -  
	4'.'	 '&
4&
	&
r)   r2   ),r   
__future__r   r^   collections.abcr   r   r   r   pathlibr   typingr	   r
   pydanticr   r   r   gateway.configr   3gateway.platforms.telegram_weekly_host_capabilitiesr   5checkin_cli.weekly_operations_schedule_host_models_r4r   rp   r   r   +gateway.platforms.nutrition_weekly_reminderr   r   5gateway.platforms.nutrition_weekly_reminder_authorityr   )gateway.platforms.telegram_edit_transportr   ra   r   r   .gateway.platforms.nutrition_weekly_owner_modelr   r   r   r,   r/   r2   r(   r)   r*   <module>r      s    C "  - #  * 6 6 )  N I  
3y 3
7i 7
q
 q
r)   