diff --git a/ra_aid/agent_utils.py b/ra_aid/agent_utils.py index f402f3e..6e5c729 100644 --- a/ra_aid/agent_utils.py +++ b/ra_aid/agent_utils.py @@ -189,6 +189,7 @@ def run_research_agent( human_section=human_section, web_research_section=web_research_section, key_facts=key_facts, + work_log=get_memory_value('work_log'), code_snippets=code_snippets, related_files=related_files ) @@ -382,6 +383,7 @@ def run_planning_agent( related_files="\n".join(get_related_files()), key_facts=get_memory_value('key_facts'), key_snippets=get_memory_value('key_snippets'), + work_log=get_memory_value('work_log'), research_only_note='' if config.get('research_only') else ' Only request implementation if the user explicitly asked for changes to be made.' ) diff --git a/ra_aid/prompts.py b/ra_aid/prompts.py index ad9d922..e0cbb2b 100644 --- a/ra_aid/prompts.py +++ b/ra_aid/prompts.py @@ -118,6 +118,11 @@ Relevant Code Snippets: Related Files: {related_files} +Work done so far: + +{work_log} + + Be very thorough in your research and emit lots of snippets, key facts. If you take more than a few steps, be eager to emit research subtasks.{research_only_note} Objective @@ -326,6 +331,11 @@ Relevant Code Snippets: Related Files: {related_files} +Work done so far: + +{work_log} + + Be very thorough in your research and emit lots of snippets, key facts. If you take more than a few steps, be eager to emit research subtasks. Objective @@ -439,6 +449,11 @@ Key Facts: Key Snippets: {key_snippets} +Work done so far: + +{work_log} + + Fact Management: Each fact is identified with [Fact ID: X]. Facts may be deleted if they become outdated, irrelevant, or duplicates. diff --git a/ra_aid/tools/agent.py b/ra_aid/tools/agent.py index 91d0462..4b918d6 100644 --- a/ra_aid/tools/agent.py +++ b/ra_aid/tools/agent.py @@ -9,7 +9,7 @@ ResearchResult = Dict[str, Union[str, bool, Dict[int, Any], List[Any], None]] from rich.console import Console from ra_aid.tools.memory import _global_memory from ra_aid.console.formatting import print_error -from .memory import get_memory_value, get_related_files, get_work_log, reset_work_log +from .memory import get_memory_value, get_related_files, get_work_log from .human import ask_human from ..llm import initialize_llm from ..console import print_task_header @@ -78,10 +78,7 @@ def request_research(query: str) -> ResearchResult: # Get completion message if available completion_message = _global_memory.get('completion_message', 'Task was completed successfully.' if success else None) - # Get and reset work log if at root depth - work_log = get_work_log() if current_depth == 1 else None - if current_depth == 1: - reset_work_log() + work_log = get_work_log() # Clear completion state from global memory _global_memory['completion_message'] = '' @@ -140,11 +137,7 @@ def request_web_research(query: str) -> ResearchResult: # Get completion message if available completion_message = _global_memory.get('completion_message', 'Task was completed successfully.' if success else None) - # Get and reset work log if at root depth - current_depth = _global_memory.get('agent_depth', 0) - work_log = get_work_log() if current_depth == 1 else None - if current_depth == 1: - reset_work_log() + work_log = get_work_log() # Clear completion state from global memory _global_memory['completion_message'] = '' @@ -205,11 +198,7 @@ def request_research_and_implementation(query: str) -> Dict[str, Any]: # Get completion message if available completion_message = _global_memory.get('completion_message', 'Task was completed successfully.' if success else None) - # Get and reset work log if at root depth - current_depth = _global_memory.get('agent_depth', 0) - work_log = get_work_log() if current_depth == 1 else None - if current_depth == 1: - reset_work_log() + work_log = get_work_log() # Clear completion state from global memory _global_memory['completion_message'] = '' @@ -278,10 +267,7 @@ def request_task_implementation(task_spec: str) -> Dict[str, Any]: completion_message = _global_memory.get('completion_message', 'Task was completed successfully.' if success else None) # Get and reset work log if at root depth - current_depth = _global_memory.get('agent_depth', 0) - work_log = get_work_log() if current_depth == 1 else None - if current_depth == 1: - reset_work_log() + work_log = get_work_log() # Clear completion state from global memory _global_memory['completion_message'] = '' @@ -339,10 +325,7 @@ def request_implementation(task_spec: str) -> Dict[str, Any]: completion_message = _global_memory.get('completion_message', 'Task was completed successfully.' if success else None) # Get and reset work log if at root depth - current_depth = _global_memory.get('agent_depth', 0) - work_log = get_work_log() if current_depth == 1 else None - if current_depth == 1: - reset_work_log() + work_log = get_work_log() # Clear completion state from global memory _global_memory['completion_message'] = '' diff --git a/tests/ra_aid/test_agent_utils.py b/tests/ra_aid/test_agent_utils.py new file mode 100644 index 0000000..e69de29