diff --git a/pr_agent/algo/utils.py b/pr_agent/algo/utils.py
index d595dde9..82a5b782 100644
--- a/pr_agent/algo/utils.py
+++ b/pr_agent/algo/utils.py
@@ -211,6 +211,26 @@ def convert_to_markdown_v2(output_data: dict,
value = emphasize_header(value.strip(), only_markdown=True)
markdown_text += f"{value}\n\n"
elif 'todo sections' in key_nice.lower():
+ def format_todo_item(todo_item):
+ relevant_file = todo_item.get('relevant_file', '').strip()
+ line_number = todo_item.get('line_number', '')
+ content = todo_item.get('content', '')
+ reference_link = None
+ try:
+ if git_provider and relevant_file and line_number:
+ reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
+ except Exception as e:
+ print(f"Error generating link: {e}")
+ return f"{relevant_file} [{line_number}]: {content}"
+
+ file_line = f"{relevant_file} [{line_number}]"
+ if reference_link:
+ if gfm_supported:
+ file_line = f"{file_line}"
+ else:
+ file_line = f"[{file_line}]({reference_link})"
+ return f"{file_line}: {content}" if content.strip() else file_line
+
if gfm_supported:
markdown_text += f"
"
if is_value_no(value):
@@ -220,20 +240,10 @@ def convert_to_markdown_v2(output_data: dict,
if isinstance(value, list):
markdown_text += "\n"
for todo_item in value:
- relevant_file = todo_item.get('relevant_file', '').strip()
- line_number = todo_item.get('line_number', '')
- content = todo_item.get('content', '')
- reference_link = None
- if git_provider and relevant_file and line_number:
- reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
- file_line = f"{relevant_file} [{line_number}]"
- if reference_link:
- file_line = f"{file_line}"
- if content.strip():
- markdown_text += f"- {file_line}: {content}
\n"
- else:
- markdown_text += f"- {file_line}
\n"
+ markdown_text += f"- {format_todo_item(todo_item)}
\n"
markdown_text += " \n"
+ else:
+ markdown_text += f"{format_todo_item(value)} \n"
markdown_text += f" |
\n"
else:
if is_value_no(value):
@@ -242,18 +252,9 @@ def convert_to_markdown_v2(output_data: dict,
markdown_text += f"### {emoji} ToDo sections\n\n"
if isinstance(value, list):
for todo_item in value:
- relevant_file = todo_item.get('relevant_file', '').strip()
- line_number = todo_item.get('line_number', '')
- content = todo_item.get('content', '')
- if git_provider and relevant_file and line_number:
- reference_link = git_provider.get_line_link(relevant_file, line_number, line_number)
- file_line = f"[{relevant_file} [{line_number}]]({reference_link})"
- else:
- file_line = f"{relevant_file} [{line_number}]"
- if content.strip():
- markdown_text += f"- {file_line}: {content}\n"
- else:
- markdown_text += f"- {file_line}\n"
+ markdown_text += f"- {format_todo_item(todo_item)}\n"
+ else:
+ markdown_text += f"- {format_todo_item(value)}\n"
elif 'can be split' in key_nice.lower():
if gfm_supported:
markdown_text += f""
diff --git a/pr_agent/settings/pr_reviewer_prompts.toml b/pr_agent/settings/pr_reviewer_prompts.toml
index cfe63562..29a73a49 100644
--- a/pr_agent/settings/pr_reviewer_prompts.toml
+++ b/pr_agent/settings/pr_reviewer_prompts.toml
@@ -75,7 +75,7 @@ class KeyIssuesComponentLink(BaseModel):
class TodoSection(BaseModel):
relevant_file: str = Field(description="The file containing the TODO comment")
line_number: int = Field(description="The line number of the TODO comment")
- content: str = Field(description="The content of the TODO comment. Only include items that are actual TODO comments inside code comments (e.g., lines starting with #, //, /*, |