
    Di                        d Z ddlZddlmZ d ZddededefdZdd	eded
efdZdefdZ	e
dk(  rddlZddlZdej                  v r ed        ed       	  e       Z ed        ed       ej!                  dd      Z e ej$                  ede              ed       ej'                  dd      Z e ej$                  ede             yyy# e$ r*Z ede        ddlZ ej0                          Y dZ[ydZ[ww xY w)ae  
Mem0 Memory Orchestration Layer
Sits over existing Qdrant + PostgreSQL + Redis stack
Auto-extracts facts from agent sessions, deduplicates, stores per user_id

Provider compatibility (mem0ai 1.0.4):
- LLM provider:     "gemini"  (NOT "google")
- Embedder provider:"gemini"  (NOT "google")
- Qdrant config:    use "url" with https:// prefix + api_key field
    N)Memoryc                     t         j                  j                  d      xs t         j                  j                  d      } t         j                  j                  dd      }t         j                  j                  dd      }t         j                  j                  dd      }|r|st        d      d	| d
| }d||dddddd| dddd| ddd}t	        j
                  |      S )NGEMINI_API_KEY_NEWGEMINI_API_KEYGENESIS_QDRANT_HOST GENESIS_QDRANT_PORT6333GENESIS_QDRANT_API_KEYzGENESIS_QDRANT_HOST and GENESIS_QDRANT_API_KEY environment variables are required. Set them in config/secrets.env or your environment.zhttps://:qdrantgenesis_mem0_gemini_768i   )urlapi_keycollection_nameembedding_model_dims)providerconfiggeminizgemini-2.0-flash)modelr   zgemini-embedding-001)vector_storellmembedder)osenvironget
ValueErrorr   from_config)
gemini_keyqdrant_hostqdrant_portqdrant_api_key
qdrant_urlr   s         ./mnt/e/genesis-system/core/mem0_integration.pyget_mem0_clientr%      s     45YHX9YJ**..!6;K**..!6?KZZ^^$<bANnB
 	
 K=+7J !!)#<(+	
 !+%
 !/%
#F2 f%%    session_transcriptuser_idagent_idc                 B    t               }|j                  | ||      }|S )z>Call at end of every agent session to extract + store memories)r(   r)   )r%   add)r'   r(   r)   mresults        r$   add_session_memoryr.   >   s$    AUU%wUJFMr&   querytop_kc                 >    t               }|j                  | ||      S )z/Query memories for a user before task execution)r(   limit)r%   search)r/   r(   r0   r,   s       r$   query_memoriesr4   E   s    A88E7%888r&   c                 :    t               }|j                  |       S )Nr(   )r%   get_all)r(   r,   s     r$   get_all_memoriesr8   K   s    A99W9%%r&   __main__z--testz=== Mem0 Integration Test ===z=Building client (Gemini LLM + Gemini Embed + Qdrant HTTPS)...zClient built OK.z
Adding test memory...zTest memory: Genesis uses Gemini 2.0 Flash for computer use tasks. ReceptionistAI targets Australian tradies at $497/mo. Session 58 had voice widget go LIVE.genesis_testr6      )indentdefaultz#
Searching memories for 'Gemini'...GeminizERROR: )genesis)   )__doc__r   mem0r   r%   strr.   intr4   r8   __name__sysjsonargvprintr,   r+   r-   dumpsr3   results	Exceptione	traceback	print_exc r&   r$   <module>rQ      sH  	 
 (&V3   9# 9 9C 9&c &
 z388-.MN	"!A$%+,UU7 '	  F *$**VAs;<89hhxh@G*$**WQ<=!  &  	"GA3- I!!	"s   A;C D D  D