mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-31 01:35:00 +00:00
refactor
This commit is contained in:
parent
17c13da008
commit
5f3cf2cb2f
1 changed files with 38 additions and 34 deletions
|
@ -71,6 +71,8 @@ class Coder:
|
|||
test_outcome = None
|
||||
multi_response_content = ""
|
||||
|
||||
partial_response_content = None
|
||||
|
||||
@classmethod
|
||||
def create(
|
||||
self,
|
||||
|
@ -609,7 +611,7 @@ class Coder:
|
|||
def run_stream(self, user_message):
|
||||
self.io.user_input(user_message)
|
||||
self.init_before_message()
|
||||
yield from self.send_new_user_message(user_message)
|
||||
yield from self.send_message(user_message)
|
||||
|
||||
def init_before_message(self):
|
||||
self.reflected_message = None
|
||||
|
@ -619,46 +621,29 @@ class Coder:
|
|||
self.edit_outcome = None
|
||||
|
||||
def run(self, with_message=None):
|
||||
while True:
|
||||
self.init_before_message()
|
||||
try:
|
||||
if with_message:
|
||||
self.io.user_input(with_message)
|
||||
self.run_one(with_message)
|
||||
return self.partial_response_content
|
||||
|
||||
try:
|
||||
if with_message:
|
||||
new_user_message = with_message
|
||||
self.io.user_input(with_message)
|
||||
else:
|
||||
new_user_message = self.run_loop()
|
||||
while True:
|
||||
user_message = self.get_input()
|
||||
self.run_one(user_message)
|
||||
except KeyboardInterrupt:
|
||||
self.keyboard_interrupt()
|
||||
except EOFError:
|
||||
return
|
||||
|
||||
while new_user_message:
|
||||
self.reflected_message = None
|
||||
list(self.send_new_user_message(new_user_message))
|
||||
|
||||
new_user_message = None
|
||||
if self.reflected_message:
|
||||
if self.num_reflections < self.max_reflections:
|
||||
self.num_reflections += 1
|
||||
new_user_message = self.reflected_message
|
||||
else:
|
||||
self.io.tool_error(
|
||||
f"Only {self.max_reflections} reflections allowed, stopping."
|
||||
)
|
||||
|
||||
if with_message:
|
||||
return self.partial_response_content
|
||||
|
||||
except KeyboardInterrupt:
|
||||
self.keyboard_interrupt()
|
||||
except EOFError:
|
||||
return
|
||||
|
||||
def run_loop(self):
|
||||
inp = self.io.get_input(
|
||||
def get_input(self):
|
||||
return self.io.get_input(
|
||||
self.root,
|
||||
self.get_inchat_relative_files(),
|
||||
self.get_addable_relative_files(),
|
||||
self.commands,
|
||||
)
|
||||
|
||||
def preproc_user_input(self, inp):
|
||||
if not inp:
|
||||
return
|
||||
|
||||
|
@ -670,6 +655,25 @@ class Coder:
|
|||
|
||||
return inp
|
||||
|
||||
def run_one(self, user_message):
|
||||
self.init_before_message()
|
||||
|
||||
message = self.preproc_user_input(user_message)
|
||||
|
||||
while message:
|
||||
self.reflected_message = None
|
||||
list(self.send_message(message))
|
||||
|
||||
if not self.reflected_message:
|
||||
break
|
||||
|
||||
if self.num_reflections >= self.max_reflections:
|
||||
self.io.tool_error(f"Only {self.max_reflections} reflections allowed, stopping.")
|
||||
return
|
||||
|
||||
self.num_reflections += 1
|
||||
message = self.reflected_message
|
||||
|
||||
def check_for_urls(self, inp):
|
||||
url_pattern = re.compile(r"(https?://[^\s/$.?#].[^\s]*[^\s,.])")
|
||||
urls = list(set(url_pattern.findall(inp))) # Use set to remove duplicates
|
||||
|
@ -872,7 +876,7 @@ class Coder:
|
|||
|
||||
return messages
|
||||
|
||||
def send_new_user_message(self, inp):
|
||||
def send_message(self, inp):
|
||||
self.aider_edited_files = None
|
||||
|
||||
self.cur_messages += [
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue