
    gRj3                       U d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z dZdZ G d d	ee      Z G d
 dee      Z G d dee      Zej$                  j&                  ej(                  j&                  ej*                  j&                  ej(                  j&                  ej,                  j&                  ej(                  j&                  ej.                  j&                  ej(                  j&                  ej0                  j&                  ej(                  j&                  ej2                  j&                  ej(                  j&                  ej4                  j&                  ej6                  j&                  ej8                  j&                  ej6                  j&                  ej:                  j&                  ej6                  j&                  ej<                  j&                  ej6                  j&                  ej>                  j&                  ej@                  j&                  iZ!de"d<    e#ej>                  j&                  ej<                  j&                  h      Z$dZ%d$dZ&d%dZ'	 	 	 	 	 	 d&dZ(d'dZ) e*       Z+de+df	 	 	 	 	 	 	 	 	 d(dZ,ddddd	 	 	 	 	 	 	 	 	 	 	 	 	 d)dZ-dd	 	 	 	 	 	 	 	 	 	 	 d*dZ.d+dZ/dd d!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d,d"Z0g d#Z1y)-u_  utils.callback_next_action_runner_v2 — 11 enum next_action decision + 6 result enum (v2).

task-2644+1 ANU_CALLBACK_COLLECTOR_CONTROL_PLANE_CLEAN_REPLACEMENT
task md: memory/tasks/task-2644+1.md
spec (read-only): memory/specs/system_anu_callback_collector_control_plane_spec_260524.md

v2 변경:
- schema name suffix v2
- helper_integration 가용성 명시 (필수 · 미가용 시 HOLD_FOR_CHAIR fail-closed)
- dispatch_via_helper(): DISPATCH_AUTO_REMEDIATION 실행 시 task-2646
  registration helper 단일 진입점 사용 강제 (자체 cron CLI 호출 금지)
- replacement_verdict 필드 추가
    )annotations)Enum)AnyDictOptional)%callback_collector_helper_integrationz$utils.callback_next_action_runner.v2z$utils.callback_next_action_runner.v1c                  8    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZy)NextActionV2REQUEST_CHAIR_MERGE_APPROVALREPORT_CRITICAL7)REPORT_PERMISSION_OR_CREDENTIAL_EXPANSIONDISPATCH_AUTO_REMEDIATIONRERUN_ALLOWED_GATERUN_OWNER_GEMINI_TRIGGER_ROUTERCREATE_FOLLOWUP_TASK_SPECWAIT_FOR_BATCH_SIBLINGSBATCH_ADJUDICATENOOP_TERMINALHOLD_FOR_CHAIRN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r        ;/home/jay/workspace/utils/callback_next_action_runner_v2.pyr
   r
      sB    #A )0[- ;-&G# ;7)#M%Nr   r
   c                      e Zd ZdZdZdZy)NextActionBranchV2zauto-executablezchair-requiredterminal_noopN)r   r   r   AUTO_EXECUTABLECHAIR_REQUIREDTERMINAL_NOOPr   r   r   r   r   )   s    'O%N#Mr   r   c                  $    e Zd ZdZdZdZdZdZdZy)NextActionResultV2DISPATCH_REGISTEREDTELEGRAM_SENTLEDGER_ONLYHOLD_PACKET_CREATEDBATCH_WAIT_RECORDEDFAILEDN)	r   r   r   r$   r%   r&   r'   r(   r)   r   r   r   r#   r#   /   s#    /#MK//Fr   r#   zDict[str, str]	BRANCH_OF)
merge_executionlive_settings_modificationlive_cokacdir_modificationbot_app_token_usechair_authorization_issuepr_141_pilot"production_pr_lifecycle_activationadmin_overridedestructive_gitforeign_dirty_cleanupc                    t        | t              r| S t        | t        t        f      r| dk7  S t        | t              r | j                         j                         dv S t        |       S )Nr   >   1hityestrue)
isinstanceboolintfloatstrstriplower)values    r   _truthyrB   Z   sX    %%#u&z%{{}""$(CCC;r   c                ^    t         j                  | t        j                  j                        S N)r*   getr   r    rA   )actions    r   	branch_ofrG   d   s     ==!3!B!B!H!HIIr   c                    | j                  d      xs | j                  d      }|y|j                  d      }|y|y||k7  ryy)Ndispatch_state_snapshot_idsnapshot_idMISSINGMISMATCHSTALEFRESH)rE   )envelope	anu_stateenv_snapshotcur_snapshots       r   validate_state_freshnessrS   h   sX     << <=\mA\L==/L|#r   c                V    t         D ]   }t        | j                  |            s|c S  y rD   )FORBIDDEN_AUTO_FLAGSrB   rE   )rO   fs     r   has_forbidden_auto_flagrW   y   s+    ! 8<<?#H r   Nc                   |xs i }t        j                         }|j                  s,t        t        j
                  ddd|j                               S | j                  d      }| j                  d      }|t        u r| j                  d      xs d}nt        ||      }|d	v r/t        t        j
                  d
| d||j                               S t        |      }|r.t        t        j
                  d| ||j                               S |dk(  r+t        t        j
                  d||j                               S |dk(  s|dk(  r,t        t        j                  d|d|j                               S |dk(  s|dk(  r+t        t        j                  d||j                               S |dv s|dk(  r+t        t        j                  d||j                               S |dk(  r[|dk(  r+t        t        j                  d||j                               S t        t        j
                  d||j                               S |dk(  r+t        t        j                  d||j                               S |d k(  s|r>|j                  d!      d"u r+t        t        j                   d#||j                               S |d$k(  s|r>|j                  d!      du r+t        t        j"                  d%||j                               S |d&k(  r+t        t        j$                  d'||j                               S |d(k(  r+t        t        j$                  d)||j                               S |d*k(  r+t        t        j&                  d+||j                               S |d,v r0|d-k(  r+t        t        j(                  d.||j                               S t        t        j
                  d/||j                               S )0uP   v2 11-enum next_action decision (보강-2/3/4 통합 fail-closed + helper gate).%HELPER_INTEGRATION_BYPASS_FAIL_CLOSEDrK   REPLACEMENT_FAIL)reason	freshnessreplacement_verdictintegration_statusterminal_statepolicy_classstate_freshness_statusrN   >   rM   rK   rL   STATE_FRESHNESS__FAIL_CLOSED)r[   r\   r^   FORBIDDEN_AUTO_FLAG_NOT_CONTROL_PLANE_COMPLIANT*NOT_CONTROL_PLANE_COMPLIANT_REQUIRES_CHAIRMERGE_READYMERGE_POLICY_LOCKMERGE_POLICY_LOCK_HARDCODEDT)r[   r\   
merge_lockr^   CRITICAL7_HITCRITICAL7_REPORTCRITICAL7_HIT_CHAIR_REQUIRED>   CREDENTIAL_EXPANSIONPERMISSION_EXPANSION"PERMISSION_OR_CREDENTIAL_EXPANSION1PERMISSION_OR_CREDENTIAL_EXPANSION_CHAIR_REQUIREDAUTO_REMEDIATION_CANDIDATE&AUTO_REMEDIATION_INSIDE_EXPECTED_FILES1AUTO_REMEDIATION_OUTSIDE_EXPECTED_FILES_FORBIDDENOWNER_GEMINI_TRIGGEROWNER_GEMINI_NUDGE_ALLOWEDSIBLING_INCOMPLETEall_settledFBATCH_SIBLINGS_NOT_ALL_SETTLEDSIBLING_FINALBATCH_ALL_SETTLEDPHASE3_TIMING_RACEPHASE3_TIMING_RACE_RERUNREGRESSION_RERUNREGRESSION_RERUN_ALLOWEDFOLLOWUP_TASK_SPECFOLLOWUP_TASK_REQUIRED>   TERMINAL_FAILTERMINAL_PASSLEDGER_ONLY_NOOPTERMINAL_LEDGER_ONLYDEFAULT_FAIL_CLOSED)_integrationr^   	available_wrapr
   r   to_jsonrE   	_SENTINELrS   rW   r   r   r   r   r   r   r   r   r   r   )	adjudicationrO   rP   batch_stateinteg_statusr_   policyr\   	forbiddens	            r   decider      s    ~2H224L!!'': 2+335
 	
 "%%&67Nn-FI $$%=>I'	,XyA	44''%i[=+335	
 	
 (1I''))5+335	
 	
 66''?+335	
 	
 &&4G*G550+335
 	
 (F6H,H))1+335	
 	
 IIVW{M{BBF+335	
 	
 55==66?##/#7#7#9	  ''F+335	
 	
 //88/+335	
 	
 --++//R_B`diBi003+335	
 	
 ([[__]=[_c=c))&+335	
 	
 %%++-+335	
 	
 ##++-+335	
 	
 %%22++335	
 	
 ;;J\@\&&)+335	
 	
 ##$'//1	 r   rN   FAUTHORITATIVE_CLEAN_REPLACEMENT)r\   rj   r]   r^   c          
         t        | j                        }t        || j                  |||||t        j                  j                  k(  |d	S )N)	schemar]   next_action_decidednext_action_branchr[   merge_policy_lock_appliedra   telegram_emitted_allowedhelper_integration_status)rG   rA   SCHEMAr   r    )rF   r[   r\   rj   r]   r^   branchs          r   r   r     sM     v||$F2%||$%/"+$*.@.O.O.U.U$U%7
 
r   )recovery_actionc                   |t         D ch c]  }|j                   c}vrt        d|       t        |       }|j	                  t        |      |||d       |S c c}w )Nzinvalid next_action_result: )next_action_attemptednext_action_resultnext_action_evidence_pathr   )r#   rA   
ValueErrordictupdater;   )decision	attemptedresultevidence_pathr   routs          r   record_resultr   5  se     '9:!agg::7x@AA
x.CJJ!%i$%2*	  J ;s   Ac                V   | j                  d      }| j                  d      }| j                  d      }t        |t              sy t        j                  |      }|r||k7  r	d| d| dS |t        j
                  j                  k(  r#|t        j                  j                  k7  rd| dS y )Nr   r   r   zBRANCH_MISMATCH (expected=z, got=)z/TELEGRAM_OUTSIDE_CHAIR_REQUIRED_BRANCH (branch=)	rE   r:   r>   r*   r#   r%   rA   r   r    )r   
action_rawr   r   expected_branchs        r   validate_branch_invariantr   I  s    34J\\./F\\./Fj#&mmJ/O6_4+O+<F6(!LL#11777FFXFgFgFmFm<m@JJr   z/home/jay/workspaceT)canonical_rootrequire_envelopec                >    t        j                  | ||||||dd	      S )u   DISPATCH_AUTO_REMEDIATION 등 auto-executable 분기에서 cron 등록 시 사용.

    Helper integration → task-2646 register_callback 단일 진입점.
    자체 cron CLI 호출 금지 (task md 원칙 4 + 10 / ANCHOR-2).
    TF)	task_idexecutor_keychat_idpromptatr   r   dispatch_pathdirect_cron_path)r   register_normal_callback)r   r   r   r   r   r   r   s          r   dispatch_via_helperr   W  s2     00!%)
 
r   )r   REPLACEMENT_OFr
   r   r#   r*   SAFE_DEGRADED_ALLOWEDrU   rG   rS   rW   r   r   r   r   )rA   r   returnr;   )rF   r>   r   r>   )rO   Dict[str, Any]rP   Optional[Dict[str, Any]]r   r>   )rO   r   r   Optional[str])
r   r   rO   r   rP   r   r   r   r   r   )rF   r
   r[   r>   r\   r>   rj   r;   r]   r>   r^   r   r   r   )r   r   r   r;   r   r>   r   r>   r   r   r   r   )r   r   r   r   )r   r>   r   r>   r   r>   r   r>   r   r>   r   r>   r   r;   r   r   )2__doc__
__future__r   enumr   typingr   r   r   utilsr   r   r   r   r>   r
   r   r#   r   rA   r   r   r   r   r   r   r   r    r   r   r   r   r!   r*   __annotations__	frozensetr   rU   rB   rG   rS   rW   objectr   r   r   r   r   r   __all__r   r   r   <module>r      s_   #  & & G 
07&3 &$d $d  **002D2T2T2Z2Z##))+=+M+M+S+S00668J8Z8Z8`8`**002D2T2T2Z2Z((..0B0R0R0X0X!!'');)K)K)Q)Q--335G5V5V5\5\!!'');)J)J)P)P::@@BTBcBcBiBi%%'9'H'H'N'N$$&8&F&F&L&L	>  "%%|'B'B'H'HI 
 J' 	" H	
 *.,0	X X&X X *	X
 X~ @37  	
   1 : &*  	
  # (* 0!  	
  	   8r   