43 lines
1.3 KiB
Python
Raw Normal View History

2025-11-04 05:17:27 +01:00
from pr.config import MAX_AUTONOMOUS_ITERATIONS
from pr.ui import Colors
def is_task_complete(response, iteration):
if 'error' in response:
return True
if 'choices' not in response or not response['choices']:
return True
message = response['choices'][0]['message']
content = message.get('content', '').lower()
completion_keywords = [
'task complete', 'task is complete', 'finished', 'done',
'successfully completed', 'task accomplished', 'all done',
'implementation complete', 'setup complete', 'installation complete'
]
error_keywords = [
'cannot proceed', 'unable to continue', 'fatal error',
'cannot complete', 'impossible to'
]
has_tool_calls = 'tool_calls' in message and message['tool_calls']
mentions_completion = any(keyword in content for keyword in completion_keywords)
mentions_error = any(keyword in content for keyword in error_keywords)
if mentions_error:
return True
if mentions_completion and not has_tool_calls:
return True
if iteration > 5 and not has_tool_calls:
return True
if iteration >= MAX_AUTONOMOUS_ITERATIONS:
print(f"{Colors.YELLOW}⚠ Maximum iterations reached{Colors.RESET}")
return True
return False