
    3Di@              
          S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	J
r
  SSKJrJr   SSKJr   SSKJr  S
r\" S5      r\S-  S-  r\S-  r\R2                  R5                  SS5      r\" S5      rS\4S jrS\SS4S jrS\ 4S jr!S\ 4S jr"\RG                  5         SAS\$S\	\$   S\%S\$4S jj5       r&\RG                  5       S \$S\$S!\ \$   S\$4S" j5       r'\RG                  5       S#\$S$\$S%\$S\$4S& j5       r(\RG                  5        SBS'\$S(\	\   S\$4S) jj5       r)\RG                  5        SBS*\$S+\	\   S\$4S, jj5       r*\RG                  5       S\$4S- j5       r+\RY                  S.5      S\$4S/ j5       r-\RY                  S05      S\$4S1 j5       r.\RY                  S25      S\$4S3 j5       r/\RY                  S45      S\$4S5 j5       r0\RY                  S65      S\$4S7 j5       r1\RY                  S85      S\$4S9 j5       r2\Rg                  5       SCS:\$S\$4S; jj5       r4\Rg                  5       SDS<\$S=\$S\$4S> jj5       r5\Rg                  5       S\$4S? j5       r6\(       a  \" \5        \7S@:X  a  \R%                  5         gg! \ a%    \" S5        \R$                  " / S	QS
S9  SSKJr   GNwf = f! \ a    Sr\" S5         GNf = f)Ea'  
Genesis Core MCP Server
========================
Exposes Genesis system capabilities via Model Context Protocol.

Tools:
- search_memory: Search Genesis knowledge graph
- store_memory: Store new knowledge
- trigger_workflow: Execute n8n workflows
- execute_skill: Run Genesis skills
- get_status: System status check
- gemini_ctm_flush: Commit Gemini session state to handoff files
- gemini_respawn_signal: Signal that Gemini needs to respawn
- gemini_read_boot_context: Read boot context for new Gemini sessions

Resources:
- genesis://status - Current system state
- genesis://memory/{type} - Memory tier contents
- genesis://skills - Available skills list
- genesis://workflows - Active n8n workflows

Prompts:
- evolution_analysis - System evolution report
- skill_creation - New skill design template
    N)datetime)Path)OptionalAny)	dataclassfield)FastMCPzInstalling MCP SDK...)pipinstallmcpT)check)register_gemini_toolsFzBWarning: gemini_ctm.py not found - CTM tools will not be availablez/mnt/e/genesis-systemmemoryzknowledge_graph.jsonskillsN8N_BASE_URLzhttp://localhost:5678zgenesis-corereturnc                      [         R                  5       (       a0  [        [         S5       n [        R                  " U 5      sSSS5        $ / / S.$ ! , (       d  f       N= f)z+Load the Genesis knowledge graph from file.rNentities	relations)MEMORY_FILEexistsopenjsonload)fs    4E:\genesis-system\mcp-servers\genesis-core\server.pyload_memory_graphr   H   sD    +s#q99Q< $#,, $#s   A
Agraphc                     [         R                  R                  SSS9  [        [         S5       n[        R
                  " XSS9  SSS5        g! , (       d  f       g= f)z)Save the Genesis knowledge graph to file.T)parentsexist_okw   indentN)r   parentmkdirr   r   dump)r    r   s     r   save_memory_graphr+   P   sA    TD9	k3	1		%1% 
 		s   A
Ac                  p   / n [         R                  5       (       a  [         R                  S5       H=  nUR                  S:w  d  M  U R	                  UR
                  [        U5      SS.5        M?     [         R                  S5       H+  nU R	                  UR
                  [        U5      SS.5        M-     U $ )zList available Genesis skills.z*.pyz__init__.pypython)namepathtypez*.mdprompt)
SKILLS_DIRr   globr.   appendstemstr)r   
skill_files     r   get_available_skillsr8   W   s    F$//&1J-/&OO
O$  2 %//&1JMM"J   2 M    c                  6    SSS.SSS.SSS.SSS.SSS.S	SS./$ )
z)Get status of n8n workflows (simplified).zGenesis Discovery NotifierT)r.   activezGenesis Continuous EvolutionzGenesis Memory MaintenancezGenesis Lead Capture PipelineFzGenesis Stripe Payment HandlerzGenesis Email Drip Sequence r<   r9   r   get_workflow_statusr=   k   s>     .>/4@->0EB1UC.$? r9   queryentity_typelimitc                   ^	 [        5       n/ nU R                  5       m	UR                  S/ 5       H  nT	UR                  SS5      R                  5       ;   n[        U	4S jUR                  S/ 5       5       5      nUSL =(       d    UR                  S5      U:H  nU(       d	  U(       d  Mz  U(       d  M  UR	                  U5        [        U5      U:  d  M    O   [        R                  " U [        U5      US.S	S
9$ )a.  Search the Genesis knowledge graph for relevant information.

Args:
    query: Search query (matches entity names and observations)
    entity_type: Optional filter by entity type
    limit: Maximum results to return (default 10)

Returns:
    JSON string with matching entities and their observations
r   r.    c              3   J   >#    U  H  nTUR                  5       ;   v   M     g 7fN)lower).0obsquery_lowers     r   	<genexpr> search_memory.<locals>.<genexpr>   s#      
5 399;&5s    #observationsN
entityType)r>   totalresultsr%   r&   )r   rE   getanyr4   lenr   dumps)
r>   r?   r@   r    rN   entity
name_match	obs_match
type_matchrH   s
            @r   search_memoryrW   |   s      EG++-K))J+ FJJvr$:$@$@$BB
 
zz."5
 
	 !D(SFJJ|,D,S
))NN6"7|u$ , ::W 	 r9   r.   rK   c           	        ^  [        5       n[        U 4S jUS    5       S5      nU(       aW  US   R                  U5        [        [	        US   5      5      US'   [
        R                  " 5       R                  5       US'   SnO>T UU[
        R                  " 5       R                  5       S.nUS   R                  U5        Sn[        U5        [        R                  " S	UT U[        U5      S
.SS9$ )a  Store a new entity in the Genesis knowledge graph.

Args:
    name: Entity name (unique identifier)
    entity_type: Type of entity (e.g., 'skill', 'workflow', 'concept')
    observations: List of observations/facts about this entity

Returns:
    Confirmation with entity details
c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7fr.   Nr<   )rF   er.   s     r   rI   store_memory.<locals>.<genexpr>   s     ;%q6d):%   	r   NrK   	updatedAtupdated)r.   rL   rK   	createdAtcreatedsuccess)statusactionrS   r0   observations_countr%   r&   )r   nextextendlistsetr   now	isoformatr4   r+   r   rR   rQ   )r.   r?   rK   r    existingrd   
new_entitys   `      r   store_memoryrn      s      E ;E*%;H
  ''5#'H^,D(E#F  ( 8 8 : %(!113	

 	j  ,e::!,/  r9   from_entityrelation_type	to_entityc                    [        5       nUR                  S/ 5       Vs1 s H  oDS   iM	     nnX;  a  [        R                  " SSU  S305      $ X%;  a  [        R                  " SSU S305      $ U UU[        R
                  " 5       R                  5       S.nSU;  a  / US'   US   R                  U5        [        U5        [        R                  " SU  S	U S
U 3S.SS9$ s  snf )a  Create a relationship between two entities in the knowledge graph.

Args:
    from_entity: Source entity name
    relation_type: Type of relationship (e.g., 'uses', 'depends_on', 'creates')
    to_entity: Target entity name

Returns:
    Confirmation of created relation
r   r.   errorzEntity '' not found)fromtorelationTyper`   r   rb   z --[z]--> )rc   relationr%   r&   )	r   rO   r   rR   r   rj   rk   r4   r+   )ro   rp   rq   r    r[   entity_namesnew_relations          r   create_relationr{      s     E (-yyR'@A'@!fI'@LA&zz7h{m;$GHII$zz7hyk$EFGG %\\^--/	L %k	+l+e::"m4eI;G  ) Bs   C#workflow_name
input_datac                 h   SSK nSSKn[         SU  3n [        R                  " U=(       d    0 5      R                  S5      nUR                  R                  UUSS0SS9nUR                  R                  US	S
9 nUR                  5       R                  S5      n[        R                  " SU U(       a  [        R                  " U5      OSS.SS9sSSS5        $ ! , (       d  f       g= f! UR                  R                   a,  n[        R                  " SU [        U5      S.SS9s SnA$ SnAff = f)zTrigger an n8n workflow by name.

Args:
    workflow_name: Name of the workflow (used as webhook path)
    input_data: Optional data to pass to the workflow

Returns:
    Webhook trigger result
r   Nz	/webhook/zutf-8zContent-Typezapplication/jsonPOST)dataheadersmethod   )timeout	triggered)rc   workflowresponser%   r&   rs   )rc   r   rs   )urllib.requesturllib.errorr   r   rR   encoderequestRequesturlopenreaddecodeloadsrs   URLErrorr6   )	r|   r}   urllibwebhook_urlr   reqr   resultr[   s	            r   trigger_workflowr     s    !N)M?;Kzz**+227;nn$$#%78	 % 
 ^^##C#4]]_++G4F::%)28DJJv.d 	 544 <<   zz%V
 	 	s=   A&C+ ;AC	C+ 
C($C+ (C+ +D1!D,&D1,D1
skill_name
parametersc           	      "  ^  [        5       n[        U 4S jU 5       S5      nU(       d0  [        R                  " SST  S3U Vs/ s H  oDS   PM	     snS.SS	9$ US
   S:X  a  [        R                  " ST US   SUS.SS	9$ US
   S:X  aY  [	        US   S5       nUR                  5       nSSS5        [        R                  " ST S[        W5      S:  a  USS S-   OUS.SS	9$ [        R                  " SSS.5      $ s  snf ! , (       d  f       N]= f)zExecute a Genesis skill by name.

Args:
    skill_name: Name of the skill to execute
    parameters: Optional parameters for the skill

Returns:
    Skill execution result
c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7frZ   r<   )rF   sr   s     r   rI    execute_skill.<locals>.<genexpr>@  s     ?VyJ'>!!Vr]   Nrs   zSkill 'rt   r.   )rc   rs   available_skillsr%   r&   r0   r-   infor/   z-Python skill execution requires direct import)rc   skillr/   messager   r1   r   rb   i  z...)rc   r   r0   contentzUnknown skill type)rc   rs   )r8   rf   r   rR   r   r   rQ   )r   r   r   r   r   r   r   s   `      r   execute_skillr   1  s0    "#F?V?FEzzzl+64: ;Fq6F ;
 	 	 V}  zz&MF$
  	 
v(	"%-%ffhG &zz14W1Dwu~-'	

  	 ::3GHII1 !< &%s   C;D  
Dc                  L   [        5       n [        5       n[        5       n[        R                  " S[
        R                  " 5       R                  5       [        U R                  S/ 5      5      [        U R                  S/ 5      5      S.[        U5      [        U Vs/ s H  o3S   S:X  d  M  UPM     sn5      [        U Vs/ s H  o3S   S:X  d  M  UPM     sn5      S.[        U5      [        U Vs/ s H  oDS	   (       d  M  UPM     sn5      S
.SS.SS9$ s  snf s  snf s  snf )ziGet current Genesis system status.

Returns:
    JSON with system status, memory stats, active workflows
operationalr   r   r   r0   r-   r1   )rM   r-   promptsr;   )rM   r;   1.0.0)rc   	timestampr   r   	workflowsversionr%   r&   )
r   r8   r=   r   rR   r   rj   rk   rQ   rO   )r    r   r   r   r$   s        r   
get_statusr   a  s    E!#F#%I::\\^--/EIIj"56UYY{B78

 [fFf&	X0E1fFGvGv!6h1FAvGH
 ^i?iX;1i?@
 !" #  GG @s$   D+D DD1D!D!zgenesis://statusc                      [        5       $ )zCurrent Genesis system status.)r   r<   r9   r   resource_statusr     s     <r9   zgenesis://memory/entitiesc                      [        5       n [        R                  " [        U R	                  S/ 5      5      U R	                  S/ 5      S.SS9$ )z$All entities in the knowledge graph.r   )countr   r%   r&   r   r   rR   rQ   rO   r    s    r   resource_memory_entitiesr     sH     E::UYYz2./IIj"-  r9   zgenesis://memory/relationsc                      [        5       n [        R                  " [        U R	                  S/ 5      5      U R	                  S/ 5      S.SS9$ )z%All relations in the knowledge graph.r   )r   r   r%   r&   r   r   s    r   resource_memory_relationsr     sH     E::UYY{B/0YY{B/  r9   zgenesis://skillsc                  X    [        5       n [        R                  " [        U 5      U S.SS9$ )zAvailable Genesis skills.)r   r   r%   r&   )r8   r   rR   rQ   )r   s    r   resource_skillsr     s1     "#F::V  r9   zgenesis://workflowsc            
          [        5       n [        R                  " [        U 5      [        U  Vs/ s H  oS   (       d  M  UPM     sn5      U S.SS9$ s  snf )zN8N workflow status.r;   )r   r;   r   r%   r&   )r=   r   rR   rQ   )r   r$   s     r   resource_workflowsr     sO     $%I::Y);)Q{q);< 	 ;s
   AAzgenesis://configc                      [         R                  " [        [        5      [        [        5      [        [
        5      [        SS.SS9$ )zGenesis configuration.r   )genesis_rootmemory_file
skills_dirn8n_base_urlmcp_versionr%   r&   )r   rR   r6   GENESIS_ROOTr   r2   r   r<   r9   r   resource_configr     s<     ::L);'*o$  r9   periodc                     [        5       n[        UR                  S/ 5      5      nSU  SU S[        [        5       5       S[        [	        5        Vs/ s H  o3S   (       d  M  UPM     sn5       SU  S3$ s  snf )	z-Generate a Genesis evolution analysis prompt.r   z5Analyze the Genesis system's evolution over the past z%.

Current State:
- Knowledge Graph: z entities
- Skills: z available
- Workflows: r;   z6 active

Analyze:
1. New capabilities integrated this z
2. Memory growth patterns
3. Workflow efficiency
4. Skill utilization
5. Areas requiring attention

Provide:
- Executive summary
- Key achievements
- Recommendations for next evolution targets
- Risk assessment for proposed changes
)r   rQ   rO   r8   r=   )r   r    entity_countr$   s       r   evolution_analysisr     s     EuyyR01LDVH M !> "#%&
' (13C3{13CDE F% &,H - 
 Ds   A6#A6
capabilityrequirementsc                 &    SU  SU=(       d    S S3$ )z3Generate a prompt for creating a new Genesis skill.z Design a new Genesis skill for: z

Requirements:
z!No specific requirements provideda  

Skill Specification:
1. Name and purpose
2. Input parameters (with types and validation)
3. Output format
4. Dependencies (MCP servers, APIs, libraries)
5. Error handling strategy
6. Testing approach

Implementation:
- Provide Python code using FastMCP decorators
- Include docstrings and type hints
- Add example usage

Integration:
- How this skill connects to existing Genesis infrastructure
- Memory entities it will create/update
- Workflows it may trigger
r<   )r   r   s     r   skill_creationr     s-     0
| < 44 5 6 r9   c            
         [        5       n 0 nU R                  S/ 5       H,  nUR                  SS5      nUR                  US5      S-   X'   M.     SR                  UR                  5        VVs/ s H  u  p4SU SU 3PM     snn5      nS	[	        U R                  S/ 5      5       S
[	        U R                  S/ 5      5       SU S3$ s  snnf )z4Generate a prompt for memory consolidation analysis.r   rL   unknownr      
z  - z: zaAnalyze Genesis memory for consolidation opportunities.

Current Memory State:
- Total Entities: z
- Total Relations: r   z
- Entity Types:
a[  

Tasks:
1. Identify duplicate or redundant entities
2. Find orphaned entities (no relations)
3. Detect missing relations between related concepts
4. Suggest entity merges or splits
5. Recommend new entity types for better organization

Output:
- Consolidation report
- Specific merge/split recommendations
- Relation additions
- Priority ranking
)r   rO   joinitemsrQ   )r    entity_typesr[   tctype_summarys         r   memory_consolidationr     s     ELYYz2&EE,	*&**1a014 ' 99,:L:L:NO:N$!QCr!o:NOPL uyyR012 3		+r234 5   Ps   -C
__main__)N
   rD   )weekly)rB   )8__doc__r   osasyncio
subprocessr   pathlibr   typingr   r   dataclassesr   r   mcp.server.fastmcpr	   ImportErrorprintrun
gemini_ctmr   GEMINI_CTM_AVAILABLEr   r   r2   environrO   r   r   dictr   r+   rh   r8   r=   toolr6   intrW   rn   r{   r   r   r   resourcer   r   r   r   r   r   r1   r   r   r   __name__r<   r9   r   <module>r      s  4  	       (+*P0 +,X%(>>H$
zz~~n.EF n-4 -&T &d &d (
T 
"  "&%%#% % 		% %P 0
00 s)0 		0 0f ))) ) 		) )X  "&''' 	' 'T  "&,J,J,J 	,J ,J^ C  D  !  "
 )*#  + *+3  ,  !  " #$C  %  !  " s #  6 s # s  6 c  J # zGGI E  +	
!"NN,D9**+  P 	
NOPs"   J J1 'J.-J.1KK