§
    Êi~  ã                  óš   — d Z ddlmZ ddlZddlmc mZ ddl	m
Z
mZ ddlmZ  G d„ d¦  «        Z G d„ d	¦  «        Z G d
„ d¦  «        ZdS )z'Tests for the stateless Agent executor.é    )ÚannotationsN)Úformat_scratchpad_summaryÚ	run_agent)ÚAgentConfigc                  ó"   — e Zd ZdZdd„Zdd
„ZdS )ÚMockLLMClientz/Mock LLM client that returns a canned response.ÚresponseÚstrÚreturnÚNonec                ó0   — || _         d| _        g | _        d S )NÚ )r	   Úlast_systemÚlast_messages)Úselfr	   s     ú7/root/projects/multi-agents-meeting/tests/test_agent.pyÚ__init__zMockLLMClient.__init__   s   € Ø ˆŒØ "ˆÔØ35ˆÔÐÐó    ÚsystemÚmessagesúlist[dict[str, str]]c                ó,   — || _         || _        | j        S )N)r   r   r	   )r   r   r   s      r   ÚchatzMockLLMClient.chat   s   € Ø!ˆÔØ%ˆÔØŒ}Ðr   N)r	   r
   r   r   )r   r
   r   r   r   r
   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   © r   r   r   r   	   sB   € € € € € Ø9Ð9ð6ð 6ð 6ð 6ð
ð ð ð ð ð r   r   c                  ó*   — e Zd ZdZdd„Zdd„Zdd„ZdS )	ÚTestRunAgentzTests for run_agent function.r   r   c                óº  — t          ddd¬¦  «        }t          d¬¦  «        }t          |dd|¬	¦  «        }d}||k    }|s—t          j        d
|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j
        |¦  «        ¦  «        ‚d x}}d S )NÚ	architectzSoftware ArchitectzYou are an architect.©ÚnameÚroleÚsystem_promptúUse microservices.©r	   z What architecture should we use?zTopic: database migration©ÚconfigÚpromptÚscratchpad_summaryÚclient©ú==©z%(py0)s == %(py3)sÚresult©Úpy0Úpy3úassert %(py5)sÚpy5)r   r   r   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation)r   r*   Úmock_clientr1   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6s           r   Ú#test_run_agent_returns_llm_responsez0TestRunAgent.test_run_agent_returns_llm_response   s  € Ý +Ð4HÐXoÐpÑpÔpˆÝ#Ð-AÐBÑBÔBˆÝ &Ð1Sð  iDð  MXð  Yñ  Yô  YˆØ-Ð-ˆvÐ-Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆvÐ-Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆvÑ-Ô-Ð-Õ-Ô-ˆvÑ-Ô-Ð-Ð-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                óî  — t          ddd¬¦  «        }t          d¬¦  «        }t          |dd|¬	¦  «         d}|j        }||v }|sªt	          j        d
|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        ndt	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}x}}d S )NÚdevopszDevOps EngineerzYou focus on deployment.r#   ÚOKr(   zHow to deploy?zTopic: deploymentr)   ©Úin)z3%(py1)s in %(py5)s
{%(py5)s = %(py3)s.last_system
}r?   )Úpy1r4   r6   zassert %(py7)sÚpy7)r   r   r   r   r7   r8   r<   r9   r:   r;   r=   r>   )r   r*   r?   Ú@py_assert0Ú@py_assert4r@   rC   Ú@py_format8s           r   Ú(test_run_agent_uses_config_system_promptz5TestRunAgent.test_run_agent_uses_config_system_prompt    s,  € Ý (Ð1BÐRlÐmÑmÔmˆÝ#¨TÐ2Ñ2Ô2ˆÝ˜Ð(8ÐM`ÐitÐuÑuÔuÐuØ)ÐD¨[Ô-DÐDÐ)Ð-DÐDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ)Ð-DÐDÑDÔDÕDÔDÐ)ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD¨[ÑDÔDÐDÕDÔD¨[ÑDÔDÐDÐDÕDÔDÐ-DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDr   c                ó"  — t          ddd¬¦  «        }t          d¬¦  «        }t          |dd|¬	¦  «         |j        d
         d         }d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d S )NÚtestÚTesterzYou test things.r#   zNoted.r(   zReview this?z+Previous: architect said use microservices.r)   r   ÚcontentrH   ©z%(py1)s in %(py3)sÚuser_message©rJ   r4   r5   r6   )r   r   r   r   r7   r8   r<   r9   r:   r;   r=   r>   )r   r*   r?   rU   rL   r@   rB   rC   s           r   Ú-test_run_agent_includes_scratchpad_in_messagez:TestRunAgent.test_run_agent_includes_scratchpad_in_message&   sï  € Ý &¨xÐGYÐZÑZÔZˆÝ#¨XÐ6Ñ6Ô6ˆÝ˜¨ÐKxð  BMð  	Nñ  	Nô  	Nð  	NØ"Ô0°Ô3°IÔ>ˆØ<ÐLÐ<ÀÐLÐLÐLÐLÕLÔLÐLÐLÐLÐLÐ<ÀÐLÑLÔLÕLÔLÐ<ÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔLÀÑLÔLÐLÕLÔLÀÑLÔLÐLÐLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLØÐ-ˆ~ Ð-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆ~ Ð-Ñ-Ô-Õ-Ô-ˆ~Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- Ñ-Ô-Ð-Õ-Ô- Ñ-Ô-Ð-Ð-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   N©r   r   )r   r   r   r   rD   rO   rW   r   r   r   r    r       sZ   € € € € € Ø'Ð'ð.ð .ð .ð .ðEð Eð Eð Eð.ð .ð .ð .ð .ð .r   r    c                  ó"   — e Zd ZdZdd„Zdd„ZdS )ÚTestFormatScratchpadSummaryz+Tests for format_scratchpad_summary helper.r   r   c                ón  — t          g ¦  «        }d}||k    }|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}}d S )NzNo discussion yet.r.   r0   r1   r2   r5   r6   )	r   r7   r8   r9   r:   r;   r<   r=   r>   )r   r1   r@   rA   rB   rC   s         r   Útest_empty_scratchpadz1TestFormatScratchpadSummary.test_empty_scratchpad2   sÚ   € Ý*¨2Ñ.Ô.ˆØ-Ð-ˆvÐ-Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-ˆvÐ-Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆvÑ-Ô-Ð-Õ-Ô-ˆvÑ-Ô-Ð-Ð-Õ-Ô-Ð-Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-r   c                óÄ  — ddl m } ddlm}  |dd |dddd	dd¦  «        ¬
¦  «         |dd |dddd	dd¦  «        ¬
¦  «        g}t          |¦  «        }d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d x}}d S )Nr   )Údatetime)ÚScratchpadEntryr"   r'   iê  é   é   é
   )Ú
agent_namerS   Ú	timestamprF   zThat increases complexity.é   z[architect]rH   rT   r1   rV   r5   r6   z[devops])r^   Ú
src.modelsr_   r   r7   r8   r<   r9   r:   r;   r=   r>   )	r   r^   r_   Úentriesr1   rL   r@   rB   rC   s	            r   Útest_scratchpad_with_entriesz8TestFormatScratchpadSummary.test_scratchpad_with_entries6   sÃ  € Ø%Ð%Ð%Ð%Ð%Ð%Ø.Ð.Ð.Ð.Ð.Ð.àˆO {Ð<PÐ\dÐ\dÐeiÐklÐnpÐrtÐvwÐyzÑ\{Ô\{Ð|Ñ|Ô|ØˆO xÐ9UÐaiÐaiÐjnÐpqÐsuÐwyÐ{|Ð~ñ  bAô  bAð  Bñ  Bô  Bð
ˆõ +¨7Ñ3Ô3ˆØÐ&ˆ} Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ} Ð&Ñ&Ô&Õ&Ô&ˆ}Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô& Ñ&Ô&Ð&Õ&Ô& Ñ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ø#Ð-Ð# vÐ-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð# vÐ-Ñ-Ô-Õ-Ô-Ð#Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô- vÑ-Ô-Ð-Õ-Ô- vÑ-Ô-Ð-Ð-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-ØÐ#ˆz˜VÐ#Ð#Ð#Ð#Õ#Ô#Ð#Ð#Ð#Ð#ˆz˜VÐ#Ñ#Ô#Õ#Ô#ˆzÑ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#˜VÑ#Ô#Ð#Õ#Ô#˜VÑ#Ô#Ð#Ð#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ø+Ð5Ð+¨vÐ5Ð5Ð5Ð5Õ5Ô5Ð5Ð5Ð5Ð5Ð+¨vÐ5Ñ5Ô5Õ5Ô5Ð+Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¨vÑ5Ô5Ð5Õ5Ô5¨vÑ5Ô5Ð5Ð5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5r   NrX   )r   r   r   r   r\   rh   r   r   r   rZ   rZ   /   sB   € € € € € Ø5Ð5ð.ð .ð .ð .ð6ð 6ð 6ð 6ð 6ð 6r   rZ   )r   Ú
__future__r   Úbuiltinsr9   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter7   Ú	src.agentr   r   rf   r   r   r    rZ   r   r   r   ú<module>ro      sä   ðØ -Ð -à "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ñ ô ð ð.ð .ð .ð .ð .ñ .ô .ð .ð06ð 6ð 6ð 6ð 6ñ 6ô 6ð 6ð 6ð 6r   