
    yi*                     H   d Z ddlZddlZddlmZ ddlmZ ddlmZmZm	Z	m
Z
mZmZmZ ddlZej                  j!                  d e ee      j&                  j&                               ddlmZmZ g dZg dg d	g d
g dg ddZg dg dg dg dg dg ddZd Zd Zd Zd Zd Zd Zd Z d Z!d%dZ"d Z#e$dk(  rcddlZ e%ejL                        d kD  rAd!jO                  ejL                  d d       Z( e"e(      Z) e* ejV                  e)d"#             y e*d$       yy)&u   
The Thalamus — Signal Contract, Routing & Arbitration
Every signal passes through here. Enforces the formal schema.
Applies conflict resolution when structures disagree.
    N)datetime)Path)
new_signal
load_state
save_stateenqueue_signallog_absencelog_presenceABSENCE_CATEGORIES)amygdalahippocampus)medullarcomplexr   r   cortexcorpusakashiclethe)howwhywhatwhenwherewhoexplain?)createmakebuildrunstartstopdeletesend)findsearchlookupcheckstatusshowlist)hellohiheythanksthankpleasebyesorry)writestorypoemsongdesignimaginedraw)questioncommandinformationsocialcreative)memoryrecallrememberforgetencodestore)systemprocesssignalbrainr   r   )filereadr3   editr   r"   )networkconnectsyncr#   postpublish)timescheduler   cronperiodicdaily)selfaware	consciousaliveexistzI am)r?   rE   rI   rL   rQ   rV   c                       j                          t        j                         D ]  \  }}t         fd|D              s|c S  y)Nc              3   &   K   | ]  }|v  
 y wN .0kwtexts     3/home/workspace/ghojualamanchu-v3/brain/thalamus.py	<genexpr>z!analyze_intent.<locals>.<genexpr>2        -brTz-   unknown)lowerCONTENT_MAPitemsany)rb   intentkeywordss   `  rc   analyze_intentrn   /   sC    ::<D'--/ -H--M     c                       j                          g }t        j                         D ]+  \  }}t         fd|D              s|j	                  |       - |S )Nc              3   &   K   | ]  }|v  
 y wr]   r^   r_   s     rc   rd   z!extract_topics.<locals>.<genexpr>:   re   rf   )rh   TOPIC_KEYWORDSrj   rk   append)rb   foundtopicrm   s   `   rc   extract_topicsrv   6   sP    ::<DE)//1  x-H--LL  Lro   c                    g }|j                  t        j                  d|              |j                  t        j                  d|              |j                  t        j                  d|              t        t	        |            S )z)Extract file paths, URLs, quoted strings.z	/[\w/.-]+zhttps?://\S+z	"([^"]+)")extendrefindallr*   set)rb   entitiess     rc   extract_entitiesr}   >   s[    HOOBJJ|T23OOBJJ56OOBJJ|T23Hro   c                 4    t        j                  d|       d d S )Nz	[^.!?]*\?   )ry   rz   )rb   s    rc   extract_questionsr   F   s    ::lD)"1--ro   c                     t        | j                               }t        t        t        j                  d|             d      }||z  }|dkD  s|dkD  ry|dkD  s|dkD  ryy	)
Nz[.!?]+   P      complex      moderatesimple)lensplitmaxry   )rb   words	sentencesavg_words_per_sents       rc   assess_complexityr   I   s`    

ECD12A6I*rz'",	)B.ro   c                     g } j                          |dk(  rt         fddD              r|j                  d       t         fddD              r|j                  d       t         fdd	D              r|j                  d
       t         fddD              r|j                  d       t         fddD              r|j                  d       t         fddD              r|j                  d       |S )Nr;   c              3   &   K   | ]  }|v  
 y wr]   r^   r`   krb   s     rc   rd   z"predict_actions.<locals>.<genexpr>W        >QqDy>rf   )r   r   r   create_filec              3   &   K   | ]  }|v  
 y wr]   r^   r   s     rc   rd   z"predict_actions.<locals>.<genexpr>Y   r   rf   )r   r    executer   c              3   &   K   | ]  }|v  
 y wr]   r^   r   s     rc   rd   z"predict_actions.<locals>.<genexpr>[   s     :QqDy:rf   )r!   killend	terminatec              3   &   K   | ]  }|v  
 y wr]   r^   r   s     rc   rd   z"predict_actions.<locals>.<genexpr>]   s     @QqDy@rf   )r"   removeclearr"   c              3   &   K   | ]  }|v  
 y wr]   r^   r   s     rc   rd   z"predict_actions.<locals>.<genexpr>_   s     ?QqDy?rf   )r%   r$   r&   r%   c              3   &   K   | ]  }|v  
 y wr]   r^   r   s     rc   rd   z"predict_actions.<locals>.<genexpr>a   r   rf   )r#   rO   rP   rP   )rh   rk   rs   )rb   rl   actionss   `  rc   predict_actionsr   S   s    G::<D>"=>>NN=)>"=>>NN9%:"9::NN;'@"?@@NN8$?">??NN8$>"=>>NN9%Nro   c                 d    g d}| j                         t        fd|D              ry|dk(  ryy)zEHigher uncertainty when system is asked about things it can't verify.)maybeperhapsmightzcould beznot surez
don't know	uncertainc              3   &   K   | ]  }|v  
 y wr]   r^   )r`   phrase
text_lowers     rc   rd   z'estimate_uncertainty.<locals>.<genexpr>i   s     
<F6Z
<rf   gffffff?r:   g?g?)rh   rk   )rb   rl   low_certaintyr   s      @rc   estimate_uncertaintyr   e   s2    dMJ

<m
<<ro   c                    | j                  di       }| j                  di       }| j                  di       }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d	d
      }dddd}|dk\  rd|d<   d|d<   d| d|d<   || d   d<   |S |dk\  rd|d<   d|d<   d| d|d<   || d   d<   |S |dk(  rd|d<   d|d<   d| d|d<   || d   d<   |S |dk  r%|dk  r d|d<   d|d<   d| d | d!|d<   || d   d<   |S |dkD  rd"|d<   d#|d<   d$| d%|d<   || d   d<   |S d&|d<   d#|d<   d'| d(| d)|d<   || d   d<   |S )*uh  
    Thalamus arbitration when structures disagree.

    Rules (checked in order):
    1. Amygdala Override: salience >= 0.8 → emotional urgency gates response
    2. Hippocampus Override: match_confidence >= 0.9 → prior memory dominates
    3. Arousal Suppression: amygdala.arousal == "overload" → cortex suppressed
    4. Cortex Dominance: salience < 0.5 AND uncertainty < 0.3 → normal analysis
    5. High Uncertainty: uncertainty > 0.8 → default conservatism
    6. Default: systematic conservatism, bias toward inaction on ambiguous signals

    Returns: dict describing how conflict was resolved
    r   r   r   salienceg        match_confidenceuncertainty      ?arousalcalmN)rulewinnerreasong?amygdala_overrider   r   z	Salience u,    >= 0.8 — emotional urgency gates responser   final_outputconflict_resolvedg?hippocampus_overridezMatch confidence u"    >= 0.9 — prior memory dominatesoverloadarousal_suppressionzArousal u!    — cortex processing suppressedg333333?cortex_dominancez < 0.5 and uncertainty u    < 0.3 — normal analysishigh_uncertaintynonezUncertainty u(    > 0.8 — no action on ambiguous signaldefault_conservatismzAmbiguous signal (salience=z, uncertainty=u   ) — no action taken)get)	rG   amygdala_blockhippocampus_blockcortex_blockr   
match_confr   r   
resolutions	            rc   resolve_conflictr   s   sL    ZZ
B/N

="5::h+L!!*c2H"&&'93?J""=#6K  F3G J 30
6)
8!*8*4`a
86@~23 S3
6,
8!2:,>`a
86@~23 *2
6)
8!)'2ST
86@~23 #~++/
6'
8!*8*4KK=Xrs
86@~23 S/
6%
8!-k]:bc
86@~23 0Jv!Jx8
.Q\P]]rsJx2<F>./ro   c                    t               }|j                  dd      sddiS t        | ||      }|j                  dd      |d   d<   |j                  d	d
      |d   d	<   |j                  d      rdnd|d   d<   |j                  dd      |d   d<   t        j                  |      }t        j                  |      }|d   }|d   }t        |      |d<   t        |      |d<   t        |      |d<   t        |      |d<   t        |      |d<   t        ||d         |d<   t        ||d         |d<   t        |      }||d   d<   t        |d   ||d   d           d!|d"   d#<   |d   d   |d"   d$<   t        D ]<  }|j!                  d%d&      |j#                         v s&|d'   d(   j%                  |       > t'        |       t)        j*                         j-                         |d)<   t/        |       |S )*zg
    Main entry point: route a raw input through the full brain.
    Enforces the signal contract.
    activeFerrorz+Medulla not active. Run: ghoju-v3 stimulatecurrent_beatr   r   heartbeat_at_receiverespiratory_phaseexhaletorporr   g      ?autonomic_loadterritory_statussafer   	raw_inputr   rl   r|   topics
complexity	questionspredicted_actionsr   r   r   	signal_idr   valence)qualityTr   recordedr   _ r   absence_categorieslast_signal_at)r   r   r   r   rF   r   rn   r}   rv   r   r   r   r   r   r
   r   replacerh   rs   r   r   now	isoformatr   )	r   sourceprioritystaterG   rawr   conflict_resultcats	            rc   process_signalr      s1   
 LE99Xu%FGG 	684F 16		.!0LF9,--2YY7JH-UF9)*1681D##F9&' .3YY7I6-RF:)* f%F   (F 
C(#L+C0L/4L+C0L!23!7L 1# 6L(7\(=S(TL$%"6sL<R"SL 'v.O2AF>./ $c6*3Ei3PQ$(F9j!#)*#5i#@F9i 
 " >;;sC CIIK/7O0188=>
 6 'lln668E
uMro   c           	          g }| D ]C  }t        |d   |j                  dd      |j                  dd            }|j                  |       E |S )z)Route multiple signals through the brain.r   r   userr   normal)r   r   rs   )signalsresultssigresults       rc   route_batchr     sT    G K 0#''(F2KSWWU_aiMjkv Nro   __main__r   r      )indentu9   Thalamus router — use ghoju-v3 signal to inject signals)r   r   ),__doc__jsonry   r   pathlibr   brain.stater   r   r   r   r	   r
   r   syspathinsertstr__file__parentrH   r   r   ROUTING_ORDERri   rr   rn   rv   r}   r   r   r   r   r   r   r   __name__r   argvjoinr   r   printdumpsr^   ro   rc   <module>r     s*  
  	      3tH~,,334 5 ' k OTRQO LKAHED.$J`?B z
388}qhhsxx|$$jdjj*+IJ ro   