
    m4i{1              	       r   d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ej                  j                   e ee      j                  j                               de	e   fdZddeded	edefd
ZddededefdZddededefdZdedefdZdefdZd Zedk(  r ej2                   e              yy)a  
Genesis Deep Think Bridge
Connects Gemini Deep Think/Thinking Mode directly to Genesis.

THREE MODES:
1. API Mode (gemini-2.5-flash or gemini-2.5-pro with ThinkingConfig)
2. CLI Mode (gemini CLI with model selection)
3. Browser Mode (Playwright automation of gemini.google.com for Deep Think web UI)

Usage:
    # API mode (preferred for automation)
    python deep_think_bridge.py --mode api --prompt "Your query here"

    # CLI mode (uses Gemini CLI)
    python deep_think_bridge.py --mode cli --prompt "Your query here"

    # Browser mode (for Deep Think web UI only)
    python deep_think_bridge.py --mode browser --prompt "Your query here"

    # From file
    python deep_think_bridge.py --mode api --file /path/to/prompt.txt

    # Save output
    python deep_think_bridge.py --mode api --prompt "Query" --output result.txt

    # CTM (Commit To Memory after response)
    python deep_think_bridge.py --mode api --prompt "Query" --ctm
    N)Path)Optionalreturnc                      t         j                  j                  d      } | r| S t        t              j
                  j
                  dz  dz  }|j                         r|j                         j                         S y)z3Get Gemini API key from environment or credentials.GEMINI_API_KEYCredentialszgemini_api_key.txtN)	osenvirongetr   __file__parentexists	read_textstrip)api_key
creds_files     2/mnt/e/genesis-system/scripts/deep_think_bridge.pyget_api_keyr   +   sh     jjnn-.G h&&--=@TTJ##%++--    promptmodelthinking_budgetc           
         	 	 ddl m} d}t               }|s t        d       t        j                  d       t        d	| d
       t        j                         }rj                  |      }|j                  j                  || |j                  j                  |j                  j                  |d                  }t        j                         |z
  }	t        d|	dd       d}
d}|j                   d   j"                  j$                  D ].  }t'        |dd      r|
|j(                  z  }
 ||j(                  z  }0 |||	|
j+                         |j+                         |j+                         dS t        d       j-                  |       ddd}|j/                  ||      }|j                  |       }|j(                  }t        j                         |z
  }	t        d|	dd       |||	d||dS # t        $ r ddlm} d}Y w xY w# t        $ r/ t        d       t        d       t        j                  d       Y :w xY w)a  
    Use Gemini API with thinking mode enabled.

    Models supporting thinking:
    - gemini-2.5-flash (uses ThinkingConfig with include_thoughts=True)
    - gemini-2.5-pro (uses ThinkingConfig with include_thoughts=True)

    Args:
        prompt: The query to send
        model: Model ID
        thinking_budget: Thinking token budget (default: 8192, up to 24576)

    Returns:
        dict with 'thinking' and 'response' keys
    r   NTFz>ERROR: Neither google-genai nor google-generativeai installed.z&Install with: pip install google-genai   zOERROR: No GEMINI_API_KEY found in environment or Credentials/gemini_api_key.txtu   🧠 Sending to z with thinking enabled...)r   )r   include_thoughts)thinking_config)r   contentsconfig   ✅ Response received in .2fs thought)r   r   elapsed_secondsthinkingresponserawuU   ⚠️  Using deprecated google.generativeai API (consider upgrading to google-genai)g      ?i @  )temperaturemax_output_tokens)
model_namegeneration_config)google.genaigenaiImportErrorgoogle.generativeaigenerativeaiprintsysexitr   timeClientmodelsgenerate_contenttypesGenerateContentConfigThinkingConfig
candidatescontentpartsgetattrtextr   	configureGenerativeModel)r   r   r   r-   using_new_apir   
start_timeclientr&   elapsedthought_textresponse_textpartr+   	model_objs                  r   api_moderJ   :   s[    	"( M mG_`	UG#<
=>Jg.==11;;44 % : :$3%) !; ! 5  2 	
 ))+
*)'#a89 ''*2288 	+DtY.		)*		+ .&$**,%++- &&(
 	
 	eg( !&

 ))/ * 
	
 --f5 ))+
*)'#a89 .&% 
 	
S  	"/!M	"  NO67s)   G6 6HH 
HH 4IIc                 x   ddl }	 |j                  ddgdd       t	        d	| d
       t        j                         }dd| d|ddg}|j                  |dd      }t        j                         |z
  }|j                  dk7  rEt	        d|j                          t	        d|j                          t        j                  d       t	        d|dd       |||j                  j                         |j                  dS # |j                  t        f$ r$ t	        d       t        j                  d       Y w xY w)aU  
    Use Gemini CLI with specified model.

    NOTE: Gemini CLI doesn't have a --thinking flag as of v0.28.2.
    The thinking display is controlled in .gemini/settings.json.

    Args:
        prompt: The query to send
        model: Model ID

    Returns:
        dict with 'response' key (thinking included if configured in settings)
    r   Ngeminiz	--versionT)capture_outputcheckzUERROR: gemini CLI not found. Install from https://github.com/google-gemini/gemini-clir   u#   🧠 Sending to Gemini CLI (model: )...--prompt--modelz--output-formatr?   )rM   r?   z#ERROR: Gemini CLI failed with code zSTDERR: r   r    r!   )r   r$   r&   r'   )
subprocessrunCalledProcessErrorFileNotFoundErrorr1   r2   r3   r4   
returncodestderrstdoutr   )r   r   rR   rC   cmdresultrE   s          r   cli_moder[      s.    +.t4P
 
/wd
;<J ZE;Lf
UC^^C4^@FiikJ&GA3F4E4E3FGH()	%gc]!
45 "MM'')}}	 ) ))+<= efs   D   5D98D9accountc                 r   	 ddl m} t        d| d       t        d	       t        d
               5 }|j                  j                  d      }|j                         }|j                         }t        d       |j                  d       t        d       |j                  d       t        d       t        d       t        d       |j                          ddicddd       S # t        $ r: t        d       t        d       t        d       t	        j
                  d       Y !w xY w# 1 sw Y   yxY w)a  
    Use Playwright to automate gemini.google.com with Deep Think mode.

    NOTE: This requires:
    1. Playwright installed (pip install playwright)
    2. Browsers installed (playwright install)
    3. User must be logged in to Google account with AI Ultra plan

    Args:
        prompt: The query to send
        account: Google account email (must have AI Ultra for Deep Think)

    Returns:
        dict with 'response' key
    r   )sync_playwrightz.ERROR: playwright not installed. Install with:z  pip install playwrightz  playwright installr   u,   🌐 Launching browser automation (account: rO   uE   ⚠️  WARNING: This requires manual login or saved session cookies.u@   ⚠️  Deep Think is web UI only for now (API in early access).F)headlessu'   📍 Navigating to gemini.google.com...zhttps://gemini.google.com/uB   ⏳ Waiting for Gemini to load (you may need to login manually)...networkidleu$   ❌ BROWSER MODE NOT YET IMPLEMENTEDz3   Reason: Deep Think selection UI needs inspectionz/   Workaround: Use API mode or CLI mode insteaderrorzGBrowser mode not yet implemented. Use --mode api or --mode cli instead.N)playwright.sync_apir^   r.   r1   r2   r3   chromiumlaunchnew_contextnew_pagegotowait_for_load_stateclose)r   r\   r^   pbrowsercontextpages          r   browser_modern      s     7 
8	
FG	
QR	
LM		 
a**##U#3%%'! 	78		./ 	RS  / 	45CD?@ ^
-
 
  >?()$%	
 
s   C' B)D-'?D*)D*-D6rZ   output_pathc                    t        |      }|j                  j                  dd       t        |d      5 }t	        j
                  | |d       ddd       |j                  d      }t        |d      5 }|j                  d       |j                  d	| j                  d
d       d       |j                  d| j                  dd      dd       | j                  d      r|j                  d| d    d       |j                  d| j                  d| j                  dd             d       ddd       t        d| d|        y# 1 sw Y   xY w# 1 sw Y   'xY w)zSave result to file.T)parentsexist_okw   )indentNz.mdz# Gemini Deep Think Result

z**Model**: r   unknown
z**Elapsed**: r$   r   r    zs

r%   z## Thinking Process

z

z## Response

r&   r'   r"   u   💾 Saved to z and )
r   r   mkdiropenjsondumpwith_suffixwriter   r1   )rZ   ro   output_filefmd_files        r   save_outputr     sM   {#KTD9 
k3	 '1		&!A&' %%e,G	gs	 Uq	02	+fjj)<=R@A	-

+<a @EUKL::j!GG-fZ.@-AFG	/&**ZE29N"O!PPRSTU 
N;-uWI
67' '
U Us   E3B;EEEc                    t        d       ddl}d| j                  dd       d| j                  dd      d	d
| j                  dd       d| j                  d| j                  dd             d	}t        t              j
                  j
                  dz  dz  dz  }|j                         r*|j                  t        |      |gd       t        d       yt        d       y)z(Commit result to Genesis memory systems.u$   🧠 Committing to Genesis memory...r   Nz## Gemini Deep Think Result

Model: r   rv   z

Elapsed: r$   r    zs

## Thinking
r%   zN/Az

## Response
r&   r'   r"   rw   zmcp-serverssupermemoryzsave.shT)rN   u3   ✅ Saved to Supermemory (genesis-kinan collection)u3   ⚠️  Supermemory save script not found, skipping)	r1   rR   r   r   r   r   r   rS   str)rZ   rR   r<   save_scripts       r   commit_to_memoryr      s    	
01 

7I&' (

**&
*3	/ 0 J    J

5"-. / 0
G x.''..>NQZZKK('2$?CDCDr   c            	          t        j                  dt         j                  d      } | j                  dg ddd       | j                  d	d
d       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  dt        dd       | j                         }|j                  r2t        |j                        j                         j                         }nI|j                  r|j                  }n0t        d       | j                          t        j                  d        |j                  dk(  r#t!        |j"                  |j$                  !      }nA|j                  d"k(  rt'        |j"                  #      }n|j                  d$k(  rt)              }t        d%       j+                  d&      r$t        d'       t        |d&          t        d(       t        d)       t        |j+                  d*|j+                  d+d,                   t        d-       |j,                  rt/        ||j,                         |j0                  rt3        |       y.)/Nz>Genesis Deep Think Bridge - Connect Gemini thinking to Genesisa  
Examples:
  # API mode (recommended)
  python deep_think_bridge.py --mode api --prompt "Design a memory architecture"

  # CLI mode
  python deep_think_bridge.py --mode cli --prompt "Analyze this code"

  # From file with CTM
  python deep_think_bridge.py --mode api --file prompt.txt --ctm

  # Custom model and thinking budget
  python deep_think_bridge.py --mode api --model gemini-2.5-pro --thinking-budget 10000 --prompt "Complex query"
        )descriptionformatter_classepilogz--mode)apiclirk   r   zExecution mode (default: api))choicesdefaulthelprP   z-pzPrompt text)r   z--filez-fzRead prompt from filez--outputz-ozSave output to filez--ctm
store_truezCommit result to memory)actionr   rQ   gemini-2.5-flashz$Model ID (default: gemini-2.5-flash))r   r   z--thinking-budget    z2Thinking token budget: up to 24576 (default: 8192))typer   r   z&ERROR: Must provide --prompt or --filer   )r   r   r   )r   rk   zQ
================================================================================r%   u   🧠 THINKING PROCESS:zR
--------------------------------------------------------------------------------
u   💬 RESPONSE:r&   r'   r"   zQ================================================================================
r   )argparseArgumentParserRawDescriptionHelpFormatteradd_argumentint
parse_argsfiler   r   r   r   r1   
print_helpr2   r3   moderJ   r   r   r[   rn   r   outputr   ctmr   )parserargsr   rZ   s       r   mainr   ;  s"   $$T <<F& *CU;  =

D}=
$-DE

D/DE
;TU
	+=B  D
+#tP  R D yydii**,224	67 yyE&

DDXDXY	e	&

3	i	f% 
-zz*&'fZ !"#	
	&**ZE2!6
78	- {{FDKK( xx r   __main__)r   r   )zgemini-2.5-pro)zsunvision07@gmail.com)__doc__r   rz   r	   r2   r4   pathlibr   typingr   pathappendr   r   r   r   r   dictrJ   r[   rn   r   r   r   __name__r3    r   r   <module>r      s   :   	 
    DN))001 2Xc] e
S e
 e
C e
[_ e
P,S , ,D ,^4
 4
s 4
 4
n8 83 80ET E6FR zCHHTV r   