mirror of
https://github.com/Pythagora-io/gpt-pilot.git
synced 2026-01-10 13:37:55 -05:00
Merge pull request #676 from Pythagora-io/implement-changes-and-reviewer-fixes
Fix sending changes back to rework if nothing got applied.
This commit is contained in:
@@ -8,6 +8,7 @@ from helpers.AgentConvo import AgentConvo
|
||||
from helpers.Agent import Agent
|
||||
from helpers.files import get_file_contents
|
||||
from const.function_calls import GET_FILE_TO_MODIFY, REVIEW_CHANGES
|
||||
from logger.logger import logger
|
||||
|
||||
from utils.exit import trace_code_event
|
||||
from utils.telemetry import telemetry
|
||||
@@ -269,17 +270,27 @@ class CodeMonkey(Agent):
|
||||
|
||||
if len(hunks_to_apply) == len(hunks):
|
||||
print("Applying entire change")
|
||||
logger.info(f"Applying entire change to {file_name}")
|
||||
return new_content, None
|
||||
|
||||
elif len(hunks_to_apply) == 0:
|
||||
print(f"Rejecting entire change with reason: {llm_response['review_notes']}")
|
||||
# If everything can be safely ignoring, it's probably because the files already implement the changes
|
||||
# from previous tasks (which can happen often). Insisting on a change here is likely to cause problems.
|
||||
return old_content, None
|
||||
if hunks_to_rework:
|
||||
print(f"Requesting rework for {len(hunks_to_rework)} changes with reason: {llm_response['review_notes']}")
|
||||
logger.info(f"Requesting rework for {len(hunks_to_rework)} changes to {file_name} (0 hunks to apply)")
|
||||
return old_content, review_log
|
||||
else:
|
||||
# If everything can be safely ignored, it's probably because the files already implement the changes
|
||||
# from previous tasks (which can happen often). Insisting on a change here is likely to cause problems.
|
||||
print(f"Rejecting entire change with reason: {llm_response['review_notes']}")
|
||||
logger.info(f"Rejecting entire change to {file_name} with reason: {llm_response['review_notes']}")
|
||||
return old_content, None
|
||||
|
||||
print("Applying code change:\n" + diff_log)
|
||||
logger.info(f"Applying code change to {file_name}:\n{diff_log}")
|
||||
new_content = self.apply_diff(file_name, old_content, hunks_to_apply, new_content)
|
||||
if hunks_to_rework:
|
||||
print(f"Requesting rework for {len(hunks_to_rework)} changes with reason: {llm_response['review_notes']}")
|
||||
logger.info(f"Requesting further rework for {len(hunks_to_rework)} changes to {file_name}")
|
||||
return new_content, review_log
|
||||
else:
|
||||
return new_content, None
|
||||
|
||||
@@ -10,7 +10,10 @@ the full contents of the updated file, without skipping over any content
|
||||
```
|
||||
------------------------end_of_format---------------------------
|
||||
|
||||
**IMPORTANT**:If the instructions have comments like `// ..add code here...` or `# placeholder for code`, instead of copying the comment, interpret the instructions and output the relevant code.
|
||||
|
||||
**IMPORTANT**: Your reply MUST NOT omit any code in the new implementation or substitute anything with comments like `// .. rest of the code goes here ..` or `# insert existing code here`, because I will overwrite the existing file with the content you provide. Output ONLY the content for this file, without additional explanation, suggestions or notes. Your output MUST start with ``` and MUST end with ``` and include only the complete file contents.
|
||||
**IMPORTANT**: If the user must configure something manually, mark the line that needs user configuration with `INPUT_REQUIRED {input_description}` comment, where `input_description` is a description of what needs to be added here by the user. Use appropriate syntax for comments in the file you're saving (for example `// INPUT_REQUIRED {input_description}` in JavaScript). If the file type doesn't support comments (eg JSON), don't add any.
|
||||
|
||||
**IMPORTANT**: For hardcoded configuration values that the user needs to change, mark the line that needs user configuration with `INPUT_REQUIRED {config_description}` comment, where `config_description` is a description of the value that needs to be set by the user. Use appropriate syntax for comments in the file you're saving (for example `// INPUT_REQUIRED {config_description}` in JavaScript). NEVER ask the user to write code or provide implementation, even if the instructions suggest it! If the file type doesn't support comments (eg JSON), don't add any.
|
||||
|
||||
{{ logs_and_error_handling }}
|
||||
|
||||
Reference in New Issue
Block a user