§
    s�’jÝ  ã                  ó\  — d dl mZ d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZmZmZmZ  ej        d¦  «        Z e¦   «         Ze                     d	e¬
¦  «         e eddg¦  «        ¦  «        fd d„¦   «         Ze                     de¬
¦  «         ee¦  «        fd!d„¦   «         Ze                     de¬
¦  «         e eg d¢¦  «        ¦  «        fd"d„¦   «         Ze                     de¬
¦  «         e eg d¢¦  «        ¦  «        fd#d„¦   «         ZdS )$é    )ÚannotationsN)ÚAny)Ú	APIRouterÚDependsÚHTTPException)Úget_orchestrator)Úget_current_userÚrequire_role)ÚKnowledgeIngestRequestÚKnowledgeIngestResponseÚKnowledgeSearchRequestÚKnowledgeSearchResponseÚKnowledgeSearchResultÚMemoryIngestResponseÚProjectMemoryIngestRequestÚReviewMemoryIngestRequestz%dscons.api.knowledge_agents.knowledgez/v1/knowledge/ingest)Úresponse_modelÚ
superadminÚdirectorÚpayloadr   Úcurrent_userúdict[str, Any]Úreturnr   c                óÆ   — t          ¦   «         }t          j        |                     | j        d„ | j        D ¦   «         | j        ¬¦  «        ¦  «        }t          d|¬¦  «        S )z2Ingest knowledge chunks into the shared RAG store.c                ó6   — g | ]}|                      ¦   «         ‘ŒS © ©Ú
model_dump)Ú.0Úchunks     úMC:\Projects\DSCons\app\api\routers\knowledge_agent_routes\knowledge_memory.pyú
<listcomp>z$ingest_knowledge.<locals>.<listcomp>$   s$   € ÐCÐCÐC¨5�E×$Ò$Ñ&Ô&ÐCÐCÐCó    )Ú	task_typeÚchunksÚdefault_metadataÚaccepted)ÚstatusÚingested_count)r   ÚasyncioÚrunÚingest_knowledger$   r%   r&   r   )r   r   Úorchestratorr)   s       r!   r,   r,      sl   € õ $Ñ%Ô%€LÝ”[Ø×%Ò%ØÔ'ØCÐC°G´NÐCÑCÔCØ$Ô5ð 	&ñ 	
ô 	
ñô €Nõ #¨*À^ÐTÑTÔTÐTr#   z/v1/knowledge/searchr   r   c           
     ó
  — t          ¦   «         }t          j        |                     | j        | j        | j        | j        r| j                             d¬¦  «        nd¬¦  «        ¦  «        }t          d„ |D ¦   «         ¬¦  «        S )z7Search knowledge chunks with optional metadata filters.T)Úexclude_noneN)r$   ÚqueryÚtop_kÚretrieval_filtersc                ó&   — g | ]}t          d i |¤Ž‘ŒS )r   )r   )r   Úitems     r!   r"   z$search_knowledge.<locals>.<listcomp>=   s'   € ÐCÐCÐC°4Õ&Ð.Ð.¨Ð.Ð.ÐCÐCÐCr#   )Úresults)
r   r*   r+   Úsearch_knowledger$   r0   r1   Úfiltersr   r   )r   r   r-   r5   s       r!   r6   r6   +   s—   € õ $Ñ%Ô%€LÝŒkØ×%Ò%ØÔ'Ø”-Ø”-àŒð˜gœo×8Ò8ÀdÐ8ÑKÔKÐKàð 	&ñ 	
ô 	
ñ	ô 	€Gõ #ØCÐC¸7ÐCÑCÔCðñ ô ð r#   z"/v1/knowledge/review-memory/ingest)r   r   Úpmr   r   c                ó  — t          ¦   «         }	 t          j        |                     | j        | j        | j        ¬¦  «        ¦  «        }n1# t          $ r$}t          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          d||¬¦  «        S )zJConvert one dossier review session into RAG memory chunks and ingest them.)Ú	review_idr$   r&   é�  ©Ústatus_codeÚdetailNr'   ©r(   r)   Úchunk_count)r   r*   r+   Úingest_review_memoryr:   r$   r&   Ú
ValueErrorr   Ústrr   ©r   r   r-   r)   Úexcs        r!   rA   rA   A   s´   € õ $Ñ%Ô%€Lð	GÝ œØ×-Ò-Ø!Ô+Ø!Ô+Ø!(Ô!9ð .ñ ô ñ
ô 
ˆˆøõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøõ  ØØ%Ø"ðñ ô ð s   �9A
 Á

A8ÁA3Á3A8z#/v1/knowledge/project-memory/ingestr   c                ó.  — t          ¦   «         }	 t          j        |                     | j        d„ | j        D ¦   «         | j        ¬¦  «        ¦  «        }n1# t          $ r$}t          dt          |¦  «        ¬¦  «        |‚d}~ww xY wt          d||¬¦  «        S )zJConvert project operational events into RAG memory chunks and ingest them.c                ó6   — g | ]}|                      ¦   «         ‘ŒS r   r   )r   Úevents     r!   r"   z)ingest_project_memory.<locals>.<listcomp>i   s$   € ÐGÐGÐG¨u˜×(Ò(Ñ*Ô*ÐGÐGÐGr#   )r$   Úeventsr&   r;   r<   Nr'   r?   )r   r*   r+   Úingest_project_memoryr$   rI   r&   rB   r   rC   r   rD   s        r!   rJ   rJ   \   sÁ   € õ $Ñ%Ô%€Lð	GÝ œØ×.Ò.Ø!Ô+ØGÐG¸¼ÐGÑGÔGØ!(Ô!9ð /ñ ô ñ
ô 
ˆˆøõ ð Gð Gð GÝ¨µC¸±H´HÐ=Ñ=Ô=À3ÐFøøøøðGøøøõ  ØØ%Ø"ðñ ô ð s   �AA Á
BÁA=Á=B)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   ) Ú
__future__r   r*   ÚloggingÚtypingr   Úfastapir   r   r   Úapp.api.dependenciesr   Úapp.api.routers.authr	   r
   Úapp.models.schemasr   r   r   r   r   r   r   r   Ú	getLoggerÚloggerÚrouterÚpostr,   r6   rA   rJ   r   r#   r!   ú<module>rV      sr  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð à 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 
ˆÔ	ÐBÑ	CÔ	C€Ø	ˆ‰Œ€ð ‡‚Ð#Ð4K€ÑLÔLð $+ 7¨<¨<¸ÀzÐ8RÑ+SÔ+SÑ#TÔ#TðUð Uð Uð Uñ MÔLðUð  ‡‚Ð#Ð4K€ÑLÔLð $+ 7Ð+;Ñ#<Ô#<ðð ð ð ñ MÔLðð* ‡‚Ð1ÐBV€ÑWÔWð $+ 7ØˆÐ5Ð5Ð5Ñ6Ô6ñ$ô $ðð ð ð ñ XÔWðð4 ‡‚Ð2ÐCW€ÑXÔXð $+ 7ØˆÐ5Ð5Ð5Ñ6Ô6ñ$ô $ðð ð ð ñ YÔXðð ð r#   