ó
    |¤jw  ã                  ó¨   • S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJrJr  SSKJr  SS	KJr   " S
 S5      r " S S5      r " S S5      rg)aÐ  
Two-tier Memory Architecture for Agent Context Management.

Working context: the conversation message list, owned by the agent loop and
  compressed by acli.compression (not tracked in this module).
Mid-term (Session Memory): Per-session persistent state
  (plan, reflection, tool_chains)
Long-term (Persistent Memory): Cross-session persistent memory
  (experience, user profile)

Design inspired by context engineering principles (Weng 2026,
TMLR Survey 2026).
é    )Úannotations)ÚPath)ÚAny)ÚExperienceTracker)ÚPlanTracker)ÚReflectionTrackerÚStagnationTracker)ÚToolChainLibrary)ÚTraceLoggerc                  ó,   • \ rS rSrSrSS jrSS jrSrg)	ÚSessionMemoryé   z™Mid-term memory: per-session persistent state.

Tracks plan, reflection, and tool chains for the current session.
Persisted to .acli/session/ directory.
c                óÚ   • US-  U l         U R                   R                  SSS9  [        5       U l        [	        5       U l        [        5       U l        [        U R                   5      U l	        g )NÚsessionT)ÚparentsÚexist_ok)
Úsession_dirÚmkdirr   Úplanr   Ú
reflectionr	   Ú
stagnationr
   Útool_chains©ÚselfÚworkspace_dirs     Ú«C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\dashscope/acli/memory/manager.pyÚ__init__ÚSessionMemory.__init__&   sX   € Ø(¨9Ñ4ˆÔØ×Ñ×Ñ t°dÐÑ;ä“MˆŒ	Ü+Ó-ˆŒÜ+Ó-ˆŒÜ+¨D×,<Ñ,<Ó=ˆÕó    c                ó    • U R                   R                  5         U R                  R                  5         U R                  R                  5         g©z/Reset session memory (called at session start).N)r   Ú
clear_planr   Úresetr   ©r   s    r   r#   ÚSessionMemory.reset/   s2   € à�	‰	×ÑÔØ�‰×ÑÔØ�‰×ÑÕr   )r   r   r   r   r   N©r   r   ©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r#   Ú__static_attributes__© r   r   r   r      s   † ñô>÷ r   r   c                  óh   • \ rS rSrSrS	S jr S
         SS jjr S     SS jjrSS jrSr	g)ÚPersistentMemoryé6   z”Long-term memory: cross-session persistent memory.

Stores experience and user profile that persist across sessions.
Persisted to .acli/ directory.
c                ó0   • Xl         [        U5      U l        g ©N)r   r   Ú
experiencer   s     r   r   ÚPersistentMemory.__init__=   s   € Ø*ÔÜ+¨MÓ:ˆ�r   c                ó@   • U R                   R                  UUUU5        g)zRecord a task experience.N)r6   Úrecord_experience©r   Útask_summaryÚ
tools_usedÚoutcomeÚlessons        r   r9   Ú"PersistentMemory.record_experienceA   ó"   € ð 	�‰×)Ñ)ØØØØõ		
r   c                ó8   • U R                   R                  X5      $ )z Search for relevant experiences.)r6   Úsearch_experiences)r   ÚqueryÚlimits      r   rB   Ú#PersistentMemory.search_experiencesP   s   € ð �‰×1Ñ1°%Ó?Ð?r   c                ó8   • U R                   R                  U5      $ )z(Format experiences for prompt injection.)r6   Úformat_experiences_for_prompt)r   Úexperiencess     r   Úformat_for_promptÚ"PersistentMemory.format_for_promptX   s   € à�‰×<Ñ<¸[ÓIÐIr   )r6   r   Nr&   ©Ú ©
r;   Ústrr<   z	list[str]r=   rN   r>   rN   r(   r)   )é   )rC   rN   rD   Úintr(   úlist[dict[str, Any]])rH   rQ   r(   rN   )
r*   r+   r,   r-   r.   r   r9   rB   rI   r/   r0   r   r   r2   r2   6   sv   † ñô;ð ð
àð
ð ð
ð ð	
ð
 ð
ð 
õ
ð$ ð@àð@ð ð@ð 
õ	@÷Jr   r2   c                  óv   • \ rS rSrSrSS jr\SS j5       rSS jr S         SS jjr	SS jr
SS jrS	rg
)ÚMemoryManageré]   uU  Two-tier memory manager: per-session state + cross-session
persistent memory.

Coordinates mid-term (session: plan, reflection, tool chains) and
long-term (persistent: experience, user profile) memory, plus trace
logging. The conversation's working context lives in Agent.messages and
is compressed by acli.compression â€” not tracked here.
c                ód   • [        U5      U l        [        U5      U l        [	        U5      U l        g r5   )r   r   r2   Ú
persistentr   Útracer   s     r   r   ÚMemoryManager.__init__g   s&   € Ü$ ]Ó3ˆŒÜ*¨=Ó9ˆŒÜ  Ó/ˆ�
r   c                ó  • SSK nU R                  U 5      nUR                  R                  S-  UR	                  5       R
                  SS -  n[        U5      Ul        UR                  Ul        UR                  Ul        U$ )a   Build an isolated manager for a sub-agent.

The child gets a fresh SessionMemory (own plan/reflection/tool_chains,
under a ``child-*`` subdirectory) so its tool failures and plans never
touch the parent's counters, while sharing the parent's persistent
experience store and trace logger.
r   NÚchildrené   )	ÚuuidÚ__new__r   r   Úuuid4Úhexr   rV   rW   )ÚclsÚparentr\   ÚchildÚchild_workspaces        r   Úderive_childÚMemoryManager.derive_childl   sp   € ó 	à—‘˜CÓ ˆà�N‰N×&Ñ&¨Ñ3°d·j±j³l×6FÑ6FÀrÈÐ6JÑJð 	ô & oÓ6ˆŒØ!×,Ñ,ˆÔØ—l‘lˆŒØˆr   c                óN   • U R                   R                  R                  X5        g)z2Record a tool execution for reflection monitoring.N)r   r   Úrecord_tool_execution)r   Ú	tool_nameÚsuccesss      r   rg   Ú#MemoryManager.record_tool_execution€   s   € à�‰×Ñ×5Ñ5°iÕIr   c                ó@   • U R                   R                  UUUU5        g)z.Record a task experience to persistent memory.N)rV   r9   r:   s        r   r9   ÚMemoryManager.record_experience„   r@   r   c                ó:   • U R                   R                  X5        g)zLog a trace event.N)rW   Úlog)r   Ú
event_typeÚdatas      r   Ú	log_traceÚMemoryManager.log_trace“   s   € à�
‰
�‰�zÕ(r   c                ó8   • U R                   R                  5         gr!   )r   r#   r$   s    r   Úreset_sessionÚMemoryManager.reset_session—   s   € à�‰×ÑÕr   )rV   r   rW   Nr&   )ra   ú'MemoryManager'r(   rv   )rh   rN   ri   Úboolr(   r)   rK   rM   )ro   rN   rp   zdict[str, Any]r(   r)   r'   )r*   r+   r,   r-   r.   r   Úclassmethodrd   rg   r9   rq   rt   r/   r0   r   r   rS   rS   ]   sj   † ñô0ð
 óó ðô&Jð ð
àð
ð ð
ð ð	
ð
 ð
ð 
õ
ô)÷r   rS   N)r.   Ú
__future__r   Úpathlibr   Útypingr   Ú dashscope.acli.memory.experiencer   Údashscope.acli.memory.planr   Ú dashscope.acli.memory.reflectionr   r	   Ú!dashscope.acli.memory.tool_chainsr
   Údashscope.acli.memory.tracer   r   r2   rS   r0   r   r   Ú<module>r�      sI   ðñõ #å Ý å >Ý 2÷õ ?Ý 3÷ ñ  ÷.$Jñ $J÷N<ò <r   