§
    s�’jq  ã                  óT   — d dl mZ d dlZd dlZd dlmZ ddlmZ  G d„ d¦  «        ZdS )é    )ÚannotationsN)ÚAnyé   )ÚVALID_TASK_TYPESc                  óN   — e Zd ZdZ	 ddd„Z	 	 ddd„Z	 ddd„Z	 	 ddd„Zdd„ZdS )ÚOrchestratorIngestionMixinz@Knowledge ingestion, memory chunk storage, and vector searching.NÚ	task_typeÚstrÚchunksúlist[dict[str, Any]]Údefault_metadataúdict[str, Any] | NoneÚreturnÚintc           
   ƒ  óÊ  K  — |                       |¦  «         d„ |D ¦   «         }| j                             |¦  «        }g }t          |pi ¦  «        }||d<   t	          t          ||¦  «        d¬¦  «        D �]?\  }\  }	}
t          |¦  «        }|                     t          |	                     di ¦  «        pi ¦  «        ¦  «         ||d<   |                     d¦  «        }t          |t          ¦  «        r|}nˆ|rft          t          j        t          j        t          |¦  «                             d¦  «        ¦  «                             ¦   «         ¦  «        ¦  «        }n t          t          j        ¦   «         ¦  «        }||d<   |                     ||
|	                     d	d
¦  «        |dœdœ¦  «         �ŒA| j                             |¦  «        ƒ d{V —† t+          |¦  «        S )z!Embed and store knowledge chunks.c                óx   — g | ]7}t          |                     d d¦  «        ¦  «                             ¦   «         ‘Œ8S )ÚtextÚ )r
   ÚgetÚstrip)Ú.0Úchunks     úEC:\Projects\DSCons\app\agents\orchestration\orchestrator_ingestion.pyú
<listcomp>z?OrchestratorIngestionMixin.ingest_knowledge.<locals>.<listcomp>   s:   € ÐHÐHÐH¸•�U—Y’Y˜v rÑ*Ô*Ñ+Ô+×1Ò1Ñ3Ô3ÐHÐHÐHó    r	   r   )ÚstartÚmetadataÚidzutf-8Úsource_indexr   r   )r   r   )r   ÚvectorÚpayloadN)Ú_validate_task_typeÚ_embedding_serviceÚembed_textsÚdictÚ	enumerateÚzipÚupdater   Ú
isinstancer   r
   ÚuuidÚUUIDÚhashlibÚmd5ÚencodeÚ	hexdigestÚuuid4ÚappendÚ_qdrant_storeÚupsertÚlen)Úselfr	   r   r   ÚtextsÚ
embeddingsÚpointsÚdefaultsÚindexr   r    r   Úraw_idÚpoint_ids                 r   Úingest_knowledgez+OrchestratorIngestionMixin.ingest_knowledge   sñ  è è € ð 	× Ò  Ñ+Ô+Ð+ØHÐHÀÐHÑHÔHˆØÔ,×8Ò8¸Ñ?Ô?ˆ
Ø')ˆÝÐ(Ð.¨BÑ/Ô/ˆØ )ˆ�Ñå&/µ°F¸JÑ0GÔ0GÈqÐ&QÑ&QÔ&Qð 	ñ 	Ñ"ˆE‘?�E˜6Ý˜H‘~”~ˆHØ�OŠO�D §¢¨:°rÑ!:Ô!:Ð!@¸bÑAÔAÑBÔBÐBØ$-ˆH�[Ñ!Ø—\’\ $Ñ'Ô'ˆFÝ˜&¥#Ñ&Ô&ð -Ø!��Øð -ÝÝ”I�gœk­#¨f©+¬+×*<Ò*<¸WÑ*EÔ*EÑFÔF×PÒPÑRÔRÑSÔSñô ��õ �tœz™|œ|Ñ,Ô,�Ø',ˆH�^Ñ$Ø�MŠMà"Ø$à %§	¢	¨&°"Ñ 5Ô 5Ø$,ð ð  ðð ñ	ô 	ð 	ñ 	ð Ô ×'Ò'¨Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ý�6‰{Œ{Ðr   Ú	review_idú
str | Nonec              ƒ  óp  K  — | j                              |¬¦  «        }|st          d|› d�¦  «        ‚|d         }| j                             |¦  «        }|st          d¦  «        ‚|p|                      |¦  «        }|st          d¦  «        ‚t          |pi ¦  «        }|                     d|                     d¦  «        ¦  «         |                     d|                     d	¦  «        ¦  «         |                     d
|                     d
¦  «        ¦  «         |  	                    |||¬¦  «        ƒ d{V —†S )zILoad one dossier review session from PostgreSQL and ingest memory chunks.)r>   u:   KhÃ´ng tÃ¬m tháº¥y dossier review session vá»›i review_id=ú.r   uB   KhÃ´ng táº¡o Ä‘Æ°á»£c review memory chunk phÃ¹ há»£p Ä‘á»ƒ ingest.uD   KhÃ´ng xÃ¡c Ä‘á»‹nh Ä‘Æ°á»£c task_type phÃ¹ há»£p cho review memory.Úproject_codeÚagent_scopeÚlead_agent_coder>   ©r	   r   r   N)
Ú_postgres_clientÚfetch_dossier_review_sessionsÚ
ValueErrorÚ_review_memory_serviceÚbuild_review_session_chunksÚ%_resolve_task_type_from_memory_chunksr%   Ú
setdefaultr   r=   )	r5   r>   r	   r   ÚsessionsÚsessionr   Úresolved_task_typeÚmerged_defaultss	            r   Úingest_review_memoryz/OrchestratorIngestionMixin.ingest_review_memory7   s„  è è € ð Ô(×FÒFØð Gñ 
ô 
ˆð ð 	ÝØYÈYÐYÐYÐYñô ð ð ˜1”+ˆØÔ,×HÒHÈÑQÔQˆØð 	cÝÐaÑbÔbÐbà&ð 
¨$×*TÒ*TØñ+
ô +
Ðð "ð 	eÝÐcÑdÔdÐdåÐ/Ð5°2Ñ6Ô6ˆØ×"Ò" >°7·;²;¸~Ñ3NÔ3NÑOÔOÐOØ×"Ò" =°'·+²+Ð>OÑ2PÔ2PÑQÔQÐQØ×"Ò" ;°·²¸KÑ0HÔ0HÑIÔIÐIØ×*Ò*Ø(ØØ,ð +ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r   Úeventsc              ƒ  óx  K  — |                       |¦  «         g }|D ]p}t          |¦  «        }|                     di ¦  «         |d                              d|¦  «         |                     | j                             |¦  «        ¦  «         Œq|st          d¦  «        ‚|                      |||¬¦  «        ƒ d{V —†S )z=Convert project events into knowledge chunks and ingest them.r   r	   u8   KhÃ´ng cÃ³ project memory chunk há»£p lá»‡ Ä‘á»ƒ ingest.rE   N)r"   r%   rL   ÚextendrI   Úbuild_project_event_chunksrH   r=   )r5   r	   rR   r   Ú
all_chunksÚeventÚevent_payloads          r   Úingest_project_memoryz0OrchestratorIngestionMixin.ingest_project_memory\   sû   è è € ð 	× Ò  Ñ+Ô+Ð+Ø+-ˆ
àð 	ð 	ˆEÝ  ™KœKˆMØ×$Ò$ Z°Ñ4Ô4Ð4Ø˜*Ô%×0Ò0°¸iÑHÔHÐHØ×ÒØÔ+×FÒFÀ}ÑUÔUñô ð ð ð ð 	YÝÐWÑXÔXÐXà×*Ò*ØØØ-ð +ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r   é   ÚqueryÚtop_kÚretrieval_filtersc              ƒ  óž   K  — |                       |¦  «         |                      |d|¬¦  «        }|                      ||||¬¦  «        ƒ d{V —†S )z(Search knowledge chunks for a task type.N)r	   Ú
agent_coder]   )r	   r[   r\   r]   )r"   Ú_merge_retrieval_filtersÚ	_retrieve)r5   r	   r[   r\   r]   Úeffective_filterss         r   Úsearch_knowledgez+OrchestratorIngestionMixin.search_knowledgex   s‡   è è € ð 	× Ò  Ñ+Ô+Ð+Ø ×9Ò9ØØØ/ð :ñ 
ô 
Ðð
 —^’^ØØØØ/ð	 $ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 	
r   c                óÈ   — | D ]^}t          |                     di ¦  «        pi ¦  «        }|                     d¦  «        }t          |t          ¦  «        r|t          v r|c S Œ_dS )z7Resolve task type from generated memory chunk metadata.r   r	   N)r%   r   r)   r
   r   )r   r   r   r	   s       r   rK   z@OrchestratorIngestionMixin._resolve_task_type_from_memory_chunksŽ   ss   € ð ð 	!ð 	!ˆEÝ˜EŸIšI j°"Ñ5Ô5Ð;¸Ñ<Ô<ˆHØ Ÿš [Ñ1Ô1ˆIÝ˜)¥SÑ)Ô)ð !¨iÕ;KÐ.KÐ.KØ Ð Ð Ð øØˆtr   )N)r	   r
   r   r   r   r   r   r   )NN)r>   r
   r	   r?   r   r   r   r   )r	   r
   rR   r   r   r   r   r   )rZ   N)
r	   r
   r[   r
   r\   r   r]   r   r   r   )r   r   r   r?   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   rQ   rY   rc   rK   © r   r   r   r   
   s¯   € € € € € ØJÐJð 37ð	(ð (ð (ð (ð (ðZ !%Ø26ð	#
ð #
ð #
ð #
ð #
ðR 37ð	
ð 
ð 
ð 
ð 
ð@ Ø37ð
ð 
ð 
ð 
ð 
ð,	ð 	ð 	ð 	ð 	ð 	r   r   )	Ú
__future__r   r,   r*   Útypingr   Úmodelsr   r   ri   r   r   ú<module>rm      s‰   ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $ðMð Mð Mð Mð Mñ Mô Mð Mð Mð Mr   