
    8iR                     H   d Z ddlZddlZddlZddlZddlmZmZ  ej                  ej                  dej                          ej                  e      ZddlmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZm Z m!Z!m"Z" ddl#m$Z$m%Z%m&Z&m'Z'm(Z( dd	l)m*Z*m+Z+m,Z, dd
l-m.Z.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl5m6Z7 dZ8i ddddddddddddgdddddddddidgddd d!dd"dd#did"gddd$d%di d&dd'd(di d&dd)d*dd+dd,did+gddd-d.dd/dd0did/gddd1d2di d&dd3d4di d&dd5d6di d&dd7d8ddd9ddd:d;dd<d=gddd>d?dd@ddAdid@gdddBdCdddDdddEdFddGdHdIddJdKgdddLdMddNddOdidNgdddPdQdi d&ddRdSdi d&ddTdUddddVdidgddi dWdXddYddZdidYgddd[d\dd]dd^did]gddd_d`dddadbddddcdddd&ddedfdddgdddhddidjdkgdddldmdddndddoddpdjdqgdddrdsdddtddduddvdjdwgdddxdydddzddd{dd|d}dqgddd~ddddddddd|d}dqgdddddi d&dddddddddddddddddgddddddqdddbdid&ddddddddddbdddgdddddddddidgddddddddddddddgdddddi d&ddddi d&dddddddddddddgddZ9i dd dd d d d$d d'd d)d d-d d1d d3d d5d d7d d>d dBd dLd dPd dRd dTd i dWd d[d d_d ded dld drd dxd d~d ddÄ ddĄ ddń ddƄ ddǄ ddȄ ddɄ ddʄ dd˄ Z:dee;ef   dee;ef   fd΄Z<dee;ef   fdτZ=dee;ef   fdфZ>d҄ Z?edk(  r e?        yy)z
Genesis V2 MCP Stdio Server
============================
Stdio wrapper for MCP integration with IDEs.
Implements Standard Input/Output protocol for MCP.
    N)DictAnyz4%(asctime)s - %(name)s - %(levelname)s - %(message)s)levelformatstream)	configure	kg_searchkg_get	kg_ingest
kg_contextkg_statsbrowser_navigatebrowser_clickbrowser_screenshotget_identityhealth_check)antigravity_planantigravity_executegemini_query	sync_push	sync_pullsync_statusmemory_querymemory_store)task_board_createtask_board_listtask_board_updatetask_board_claimtask_board_complete)file_lock_claimfile_lock_releasefile_lock_status)handoff_pushhandoff_pull)exec_decompose
exec_story
exec_swarmexec_status)bridgez
2024-11-05r	   z2Search knowledge graph for entities matching queryobjectstringzSearch query)typedescriptionintegerzMax results
   )r,   r-   default)querylimitr1   )r,   
propertiesrequired)r-   inputSchemar
   zGet specific entity by ID	entity_idz	Entity IDr   z!Add new entity to knowledge graphentity_jsonzJSON entity datar   z%Get knowledge graph context for agent)r,   r3   r   zGet knowledge graph statisticsr   zNavigate browser to URLurlz
Target URLr   zClick element by CSS selectorselectorzCSS selectorr   zCapture browser screenshotr   zGet agent identity and personar   z,Check server health status of all componentsr   z4Create a workflow plan via Gemini Antigravity systemzThe goal to plan forzOptional JSON context{})goalcontext_jsonr;   r   z6Execute a previously created Antigravity workflow planplan_idzID of the plan to executer   z=Direct Gemini execution for analysis, planning, or generationzThe prompt to send to Geminiz4Task type (general, analysis, planning, code_review)generalnumberzSampling temperature 0.0-1.0ffffff?)prompt	task_typetemperaturerA   r   z?Push context to shared state for cross-agent Claude/Gemini syncr<   zJSON context data to pushr   z.Pull latest shared state from cross-agent syncr   z;Get sync health and component status for Antigravity systemr   z>Query memory bridge with Gemini context for enriched responseszThe query to search memory forr   z<Store an insight in the memory bridge for persistent contextinsight_jsonz2JSON with 'content' and optional 'category' fieldsr   z9Create a task on the shared Claude/Antigravity task board	task_jsonzAJSON with title, description, type, urgency (1-10), impact (1-10)r   z%List tasks from the shared task boardz;Filter: pending, in_progress, completed, failed (empty=all)    )statusr2   r   z:Update a task on the shared board (status, priority, etc.)zTask ID to updatezJSON with fields to update)task_idupdates_jsonrI   rJ   r   z,Claim ownership of a task (atomic operation)zTask ID to claimz"Agent name (claude or antigravity))rI   agentrK   r   z(Mark a task as complete with result datazTask ID to completezJSON with result data)rI   result_jsonrL   r    z>Lock files to prevent concurrent editing by Claude/Antigravityz JSON array of file paths to lockzAgent claiming the lock)
files_jsonrK   rM   r!   zRelease file locksz"JSON array of file paths to unlockzAgent releasing the lockr"   z(Show all active file locks across agentsr#   z6Push structured handoff when finishing a block of workzWhat was donez JSON array of changed file paths[]z&JSON array of recommended next actions)summaryfiles_changed_jsonnext_actions_jsonrO   r$   z8Pull latest handoff(s) and recent events since last synczFilter by agent (empty=all)r%   z,Decompose a task into RWL stories via GeminizTask to decomposezOptional context)taskcontextrR   r&   z%Execute a single RWL story via Gemini
story_jsonzEJSON story with id, title, description, acceptance_criteria, priorityr'   z9Execute multiple RWL stories in parallel via Gemini swarmzJSON array of story objectszMax concurrent Gemini agents   )stories_jsonmax_parallelrV   r(   zIGet execution layer status: rate maximizer utilization, stats, best modelultrathink_statuszKGet status of the Ultrathink Bridge (session, active tools, dispatch queue)ultrathink_dispatchz=Dispatch a task via the Ultrathink Bridge to the optimal toolzThe task descriptionzPriority (low, medium, high)medium)rR   priorityc                 Z    t        | j                  dd      | j                  dd            S )Nr1   rF   r2   r/   )r	   getargss    4/mnt/e/genesis-system/genesis_v2/mcp/stdio_server.py<lambda>ra   z  s$    i"(=txxQS?TU     c                 8    t        | j                  dd            S )Nr6   rF   )r
   r]   r^   s    r`   ra   ra   {  s    6$((;";< rb   c                 8    t        | j                  dd            S )Nr7   r:   )r   r]   r^   s    r`   ra   ra   |  s    i(EF rb   c                     t               S N)r   r^   s    r`   ra   ra   }  s    z| rb   c                     t               S rf   )r   r^   s    r`   ra   ra   ~  s    XZ rb   c                 8    t        | j                  dd            S )Nr8   rF   )r   r]   r^   s    r`   ra   ra     s    %5dhhub6I%J rb   c                 8    t        | j                  dd            S )Nr9   rF   )r   r]   r^   s    r`   ra   ra     s    -R0H"I rb   c                     t               S rf   )r   r^   s    r`   ra   ra     s
    '9'; rb   c                     t               S rf   )r   r^   s    r`   ra   ra          rb   c                     t               S rf   )r   r^   s    r`   ra   ra     rl   rb   c                 Z    t        | j                  dd      | j                  dd            S )Nr;   rF   r<   r:   )r   r]   r^   s    r`   ra   ra     s&    %5dhhvr6JDHHUceiLj%k rb   c                 8    t        | j                  dd            S )Nr=   rF   )r   r]   r^   s    r`   ra   ra     s    (;DHHYPR<S(T rb   c                 |    t        | j                  dd      | j                  dd      | j                  dd            S )NrA   rF   rB   r>   rC   r@   )r   r]   r^   s    r`   ra   ra     sA    dhhx.Ddhh{\eFfhlhphpq~  AD  iE  "F rb   c                 8    t        | j                  dd            S )Nr<   r:   )r   r]   r^   s    r`   ra   ra     s    i(FG rb   c                     t               S rf   )r   r^   s    r`   ra   ra     s    ik rb   c                     t               S rf   )r   r^   s    r`   ra   ra          rb   c                 8    t        | j                  dd            S )Nr1   rF   )r   r]   r^   s    r`   ra   ra         dhhw.C!D rb   c                 8    t        | j                  dd            S )NrD   r:   )r   r]   r^   s    r`   ra   ra     s    dhh~t.L!M rb   c                 8    t        | j                  dd            S )NrE   r:   )r   r]   r^   s    r`   ra   ra     s    &7d8S&T rb   c                 Z    t        | j                  dd      | j                  dd            S )NrH   rF   r2   rG   )r   r]   r^   s    r`   ra   ra     s%    ODHHXr4JDHHU\^`La$b rb   c                 Z    t        | j                  dd      | j                  dd            S )NrI   rF   rJ   r:   )r   r]   r^   s    r`   ra   ra     s)    &7B8OQUQYQYZhjnQo&p rb   c                 Z    t        | j                  dd      | j                  dd            S )NrI   rF   rK   )r   r]   r^   s    r`   ra   ra     s&    %5dhhy"6MtxxX_acOd%e rb   c                 Z    t        | j                  dd      | j                  dd            S )NrI   rF   rL   r:   )r   r]   r^   s    r`   ra   ra     s*    (;DHHYPR<SUYU]U]^kmqUr(s rb   c                 Z    t        | j                  dd      | j                  dd            S NrM   rN   rK   rF   )r    r]   r^   s    r`   ra   ra     s(    ODHH\44PRVRZRZ[bdfRg$h rb   c                 Z    t        | j                  dd      | j                  dd            S r~   )r!   r]   r^   s    r`   ra   ra     s)    &7t8TVZV^V^_fhjVk&l rb   c                     t               S rf   )r"   r^   s    r`   ra   ra     s
    %5%7 rb   c                 |    t        | j                  dd      | j                  dd      | j                  dd            S )NrO   rF   rP   rN   rQ   )r#   r]   r^   s    r`   ra   ra     sF    dhhy".EtxxPdfjGkmqmumu  wJ  LP  nQ  "R rb   c                 8    t        | j                  dd            S )NrK   rF   )r$   r]   r^   s    r`   ra   ra     rv   rb   c                 Z    t        | j                  dd      | j                  dd            S )NrR   rF   rS   )r%   r]   r^   s    r`   ra   ra     s%    >$((622FQZ\^H_#` rb   c                 8    t        | j                  dd            S )NrT   r:   )r&   r]   r^   s    r`   ra   ra     s    z$((<*FG rb   c                 Z    t        | j                  dd      | j                  dd            S )NrV   rN   rW   rU   )r'   r]   r^   s    r`   ra   ra     s%    z$((>4*H$((SacdJef rb   c                     t               S rf   )r(   r^   s    r`   ra   ra     rt   rb   c                 *    t        j                         S rf   )ultrathink_bridgeget_bridge_statusr^   s    r`   ra   ra     s    &7&I&I&K rb   c                 n    t        j                  | j                  dd      | j                  dd            S )NrR   rF   r[   rZ   )r   dispatchr]   r^   s    r`   ra   ra     s0    (9(B(B488FTVCWY]YaYablnvYw(x rb   requestreturnc                    | j                  dd      }| j                  d      }| j                  di       }t        j                  d|        |dk(  rd|t        di id	d
dddS |dk(  r2t        j                         D cg c]  \  }}d|i| }}}d|d|idS |dk(  rS|j                  dd      }|j                  di       }|t        v r	 t        |   |      }	d|dd|	dgidS d|dd| ddS |dk(  ryd|dd| ddS c c}}w # t        $ r4}
t        j                  d|
        d|dt        |
      ddcY d}
~
S d}
~
ww xY w)z*Handle an MCP request and return response.methodrF   idparamszMCP request: 
initializez2.0toolsz
genesis-v2z2.0.0)nameversion)protocolVersioncapabilities
serverInfo)jsonrpcr   resultz
tools/listr   z
tools/call	argumentscontenttext)r,   r   zTool error: i )codemessage)r   r   errorNizUnknown tool: znotifications/initializedzMethod not found: )
r]   loggerinfoMCP_VERSIONTOOLSitemsTOOL_HANDLERS	Exceptionr   str)r   r   
request_idr   r   spec
tools_list	tool_namer   r   es              r`   handle_requestr     s   [[2&FT"J[[2&F
KK-x()#.R! )&	
 	
 
<	 $kkm
d T"T"

 

 
+
 	
 
<	JJvr*	JJ{B/	%&y1)<$$!VV$D#E   ! "(~i[5QR  
.	. $3EfX1NO
 	
W
0  |A3/0$$&,Q@ s$   DD 	E
)E?E
E
c                     i } 	 t         j                  j                         }|dk(  s
|dk(  s|dk(  rnId|v rD|j                         j	                  dd      \  }}|j                         | |j                         <   wt        | j                  dd            }|dkD  r4t         j                  j                  |      }t        j                  |      S i S )z#Read a JSON-RPC message from stdin.z

rF   :   zContent-Lengthr   )
sysstdinreadlinestripsplitintr]   readjsonloads)headerslinekeyvaluecontent_lengthr   s         r`   read_messager     s     G
yy!!#6>TT\TRZ$;++C3JC#(;;=GCIIK   %5q9:N))..0zz'""Irb   r   c                     t        j                  |       }t        j                  j	                  dt        |       d|        t        j                  j                          y)z#Write a JSON-RPC message to stdout.zContent-Length: z

N)r   dumpsr   stdoutwritelenflush)r   r   s     r`   write_messager     sD    jj!GJJ'G~XgYGHJJrb   c                     t         j                  d       t                t         j                  d       	 	 	 t               } | st	        |       }|rt        |       '# t        j                  $ r"}t         j                  d|        Y d}~1d}~wt        $ r"}t         j                  d|        Y d}~Zd}~ww xY w# t        $ r t         j                  d       Y yt        $ r"}t         j                  d|        Y d}~yd}~ww xY w)z)Run the MCP server using stdio transport.z+Genesis V2 MCP Server starting (stdio mode)z%Server ready, waiting for requests...zJSON decode error: NzError processing request: zServer shutting downzServer error: )r   r   r   r   r   r   r   JSONDecodeErrorr   r   KeyboardInterrupt)r   responser   s      r`   run_stdio_serverr     s    
KK=> K
KK78+?&.)'2!(+  '' 821#677 ?9!=>>?  ,*+ +~aS)**+sd   B? A B? A B? B<1B	B? B<B72B? 7B<<B? ?D	D	'DD	__main__)@__doc__asyncior   r   loggingtypingr   r   basicConfigINFOstderr	getLogger__name__r   genesis_v2.mcp.native_serverr   r	   r
   r   r   r   r   r   r   r   r    genesis_v2.mcp.antigravity_toolsr   r   r   r   r   r   r   r   genesis_v2.mcp.task_board_toolsr   r   r   r   r   genesis_v2.mcp.file_lock_toolsr    r!   r"   genesis_v2.mcp.handoff_toolsr#   r$   %genesis_v2.mcp.execution_bridge_toolsr%   r&   r'   r(   !genesis_v2.core.ultrathink_bridger)   r   r   r   r   r   r   r   r   r    rb   r`   <module>r      s	     
     
,,A::
 
		8	$   	 	 	  
  J j	K"*>J"+MVXY !	

j	 2h{K %
	j	, :AST '
	-j	@ > (;Aj	H 7 (;Ij	P 0F 
	Qj	d 6XnM $
	ej	x 3 (;yj	@ 7 (;Aj	H E (;Ij	P M!):PQ)1BYfj k  

Qj	f OH=XY #
	gj	z V#+<Z[&.?u  CL  M(0A_lop
 "

{j	R XB] ^ ((
	Sj	f G (;gj	n T (;oj	v W(;[\ !	
	wj	J UBv w ((
	Kj	` Rh  @C  D %
	aj	t >#+<y  GI  J"+MVXY
	uj	H S$,=PQ)1B^ _ #N3

Ij	^ E$,=OP"*;_` #G,

_j	t A$,=RS(0AXY #M2

uj	L W'/@bc"*;TU &w/

Mj	b +'/@de"*;UV &w/

cj	x A (;yj	B O$,_M/7Hjw{&|.6Go  }A  &B
 #
Cj	Z Q(;Xegh
[j	n E!):MN$,=O\^_  

oj	D >x  AH  I &
	Ej	X R)1B_ `)2Cano p ((

Yj	n b (;oj	v d (;wj	~ V!):PQ%->\iqr  

j	X	'U'<' F' +	'
 '' J' I' ;' /' /' k' T'   F' G' )'  -!'" D#'$ M%'( T)'* b+', p-'. e/'0 s1'4 h5'6 l7'8 79'<   R='> D?'B `C'D GE'F fG'H -I'J KK'L xM'\H
DcN H
tCH~ H
Vd38n &4S> +F z rb   