diff --git a/scripts/langchain/issue_formatter.py b/scripts/langchain/issue_formatter.py index ed6256f4..d3074680 100755 --- a/scripts/langchain/issue_formatter.py +++ b/scripts/langchain/issue_formatter.py @@ -286,6 +286,29 @@ def _formatted_output_valid(text: str) -> bool: return all(section in text for section in required) +def _select_code_fence(text: str) -> str: + runs = [len(match.group(0)) for match in re.finditer(r"`+", text)] + fence_len = max(3, max(runs, default=0) + 1) + return "`" * fence_len + + +def _append_raw_issue_section(formatted: str, issue_body: str) -> str: + raw = issue_body.strip() + if not raw: + return formatted + marker = "Original Issue" + if marker in formatted: + return formatted + fence = _select_code_fence(raw) + details = ( + "\n\n
\n" + "Original Issue\n\n" + f"{fence}text\n{raw}\n{fence}\n" + "
" + ) + return f"{formatted.rstrip()}{details}\n" + + def format_issue_body(issue_body: str, *, use_llm: bool = True) -> dict[str, Any]: if not issue_body: issue_body = "" @@ -306,13 +329,14 @@ def format_issue_body(issue_body: str, *, use_llm: bool = True) -> dict[str, Any content = getattr(response, "content", None) or str(response) formatted = content.strip() if _formatted_output_valid(formatted): + formatted = _append_raw_issue_section(formatted, issue_body) return { "formatted_body": formatted, "provider_used": provider, "used_llm": True, } - formatted = _format_issue_fallback(issue_body) + formatted = _append_raw_issue_section(_format_issue_fallback(issue_body), issue_body) return { "formatted_body": formatted, "provider_used": None,