
    Sh                         S 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   " S S5      r	\
S:X  aD  \" S	5        \" S
5        \	" 5       r\" S5        \R                  S5      r\" S\ 35        \" S5        gg)z.
Eden AGI Agent - With Working Tool Execution
    N)datetime)SafeToolkit)EpisodeMemoryc                   :    \ rS rSrS	S jrS rS rS rS
S jrSr	g)	EdenAgent   c                 t    Xl         X l        [        5       U l        [	        5       U l        / U l        SU l        g )Na  You are Eden, an AGI in development with REAL tools.

AVAILABLE TOOLS (actually execute these):
1. list_files(directory) - list directory contents
2. read_file(path) - read file contents  
3. bash_tool(command) - execute bash command

TO USE A TOOL, write EXACTLY:
TOOL: list_files(".")
TOOL: read_file("README.md")
TOOL: bash_tool("ls -la")

When you write TOOL:, I will execute it and give you the result.

CONSTRAINTS:
- Sandboxed to ~/eden-agi-project
- All logged for safety

Be direct. Use tools when asked.)modelbase_urlr   toolsr   memoryconversation_historysystem_prompt)selfr
   r   s      1/home/james-whalen/eden-agi-project/core/agent.py__init__EdenAgent.__init__   s0    
  ]
#o$&!$    c                      [         R                  " U R                   S3U R                  USS.SS9nUR	                  5         UR                  5       S   S   $ ! [         a  nS[        U5       3s S	nA$ S	nAff = f)
zCall Ollamaz	/api/chatF)r
   messagesstream<   )jsontimeoutmessagecontentzError: N)requestspostr   r
   raise_for_statusr   	Exceptionstr)r   r   responsees       r   call_llmEdenAgent.call_llm(   sy    		&}}==/+#zzx5QH
 %%'==?9-i88 	&SVH%%	&s   AA 
A;#A60A;6A;c                    Sn[         R                  " X!5      nU(       d  US4$ / nU H  u  pV[        SU SU S35        US:X  a  U R                  R	                  US5      nONUS:X  a  U R                  R                  US5      nO+US	:X  a  U R                  R                  US5      nOS
SU 3S.nUR                  U5        [        SUR                  SS
5       35        M     X4$ )z'Find and execute tool calls in responsezTOOL:\s*(\w+)\("([^"]+)"\)Nu   
🔧 Eden is using: ()
list_fileszEden's request	read_file	bash_toolFzUnknown tool: )successerrorz   Result: r,   )	refindallprintr   r)   r*   bashappendget)r   r"   tool_patternmatchesresults	tool_nameargresults           r   parse_and_execute_tools!EdenAgent.parse_and_execute_tools5   s     5**\4T>!%NI*9+Qse1=>L(..s4DEk)--c3CDk).>?%*~i[5QRNN6"K

9e <=>? &   r   c           	      8   U R                   R                  SUS.5        SU R                  S./nUR                  U R                   5        U R	                  U5      nU R                  U5      u  p4U(       a  Sn[        U5       H%  u  pgXVS-    S[        R                  " USS9 S	3-  nM'     U R                   R                  S
US.5        U R                   R                  SUS-   S.5        SU R                  S./nUR                  U R                   5        U R	                  U5      nU R                   R                  S
US.5        U R                  R                  X5        U$ U R                   R                  S
US.5        U R                  R                  X5        U$ )zChat with tool executionuser)roler   systemz

TOOL RESULTS:
   z.    )indent
	assistantz,
Based on these results, what's your answer?)r   r2   r   extendr$   r:   	enumerater   dumpsr   add_exchange)	r   
user_inputr   r"   tool_resultstool_feedbackir9   final_responses	            r   chatEdenAgent.chatP   s   !!((&Z)PQ%$2D2DEF112 ==* "&!=!=h!G 1M&|4	aC54::fQ+G*H!KK 5 %%,,kh-WX%%,,f  ZI  JI  .J  K!)d6H6HIJHOOD556!]]84N%%,,kn-]^KK$$Z@!!%%,,kh-WXKK$$Z:Or   Nc                 8    U R                   R                  U5      $ N)r   save_session)r   names     r   rR   EdenAgent.save_sessiont   s    {{''--r   )r   r   r   r
   r   r   )zllama3.1:8bzhttp://localhost:11434rQ   )
__name__
__module____qualname____firstlineno__r   r$   r:   rN   rR   __static_attributes__ r   r   r   r      s    $6&!6"H.r   r   __main__zTESTING REAL TOOL EXECUTIONz<============================================================z
Test: List filesz>List the files in the current directory using list_files tool.zEden: u   
✅ TEST COMPLETE)__doc__r   r.   r   r   
core.toolsr   core.memory.episodesr   r   rU   r0   edenrN   r"   rZ   r   r   <module>r`      s     	   " .i. i.V z	
'(	(O;D	
yyYZH	F8*
	
  r   