Massive Improvements & MVP Patches
This commit is contained in:
@@ -3,6 +3,19 @@ from __future__ import annotations
|
||||
from gitea_codex_bot.types import ParsedCommand
|
||||
|
||||
|
||||
def _inject_head_sha_marker(head_sha: str, body: str) -> str:
|
||||
marker = f"<!-- codex-review:head_sha={head_sha} -->"
|
||||
stripped = body.strip()
|
||||
if not stripped:
|
||||
return marker
|
||||
if stripped.startswith("<!-- codex-review:head_sha="):
|
||||
lines = stripped.splitlines()
|
||||
if lines:
|
||||
lines[0] = marker
|
||||
return "\n".join(lines).strip()
|
||||
return f"{marker}\n{stripped}"
|
||||
|
||||
|
||||
def format_queue_ack(head_sha: str) -> str:
|
||||
short_sha = head_sha[:7]
|
||||
return f"👀 Codex review queued for commit `{short_sha}`."
|
||||
@@ -21,6 +34,10 @@ def format_unsupported_ack(command: ParsedCommand) -> str:
|
||||
|
||||
|
||||
def format_result_comment(head_sha: str, result: dict) -> str:
|
||||
markdown_comment = result.get("markdown_comment")
|
||||
if isinstance(markdown_comment, str) and markdown_comment.strip():
|
||||
return _inject_head_sha_marker(head_sha, markdown_comment)
|
||||
|
||||
verdict = result.get("verdict", "has_issues")
|
||||
confidence = float(result.get("confidence", 0.0))
|
||||
summary = str(result.get("summary", "No summary returned."))
|
||||
@@ -47,4 +64,4 @@ def format_result_comment(head_sha: str, result: dict) -> str:
|
||||
f" Suggestion: {suggestion}" if suggestion else " Suggestion: n/a",
|
||||
]
|
||||
)
|
||||
return "\n".join(lines).strip()
|
||||
return _inject_head_sha_marker(head_sha, "\n".join(lines).strip())
|
||||
|
||||
@@ -124,7 +124,8 @@ def _build_prompt(
|
||||
' "verdict": "correct" | "has_issues",\n'
|
||||
' "confidence": 0.0,\n'
|
||||
' "summary": "...",\n'
|
||||
' "findings": [{"severity":"low|medium|high|critical","file":"...","line_start":1,"line_end":1,"title":"...","body":"...","suggestion":"..."}]\n'
|
||||
' "findings": [{"severity":"low|medium|high|critical","file":"...","line_start":1,"line_end":1,"title":"...","body":"...","suggestion":"..."}],\n'
|
||||
' "markdown_comment": "Full markdown comment body to post to Gitea. Include clear section breaks and blank lines."\n'
|
||||
"}\n\n"
|
||||
f"PR URL: {pr.html_url}\n"
|
||||
f"Mode: {mode}\n"
|
||||
@@ -138,8 +139,11 @@ def _build_prompt(
|
||||
|
||||
|
||||
def _call_openai_review(settings: Settings, prompt: str) -> dict[str, Any]:
|
||||
api_key = settings.openai_api_key.get_secret_value() if settings.openai_api_key else ""
|
||||
if not api_key.strip():
|
||||
raise ReviewError("OPENAI_API_KEY is required for API-key review mode.")
|
||||
headers: dict[str, str] = {
|
||||
"Authorization": f"Bearer {settings.openai_api_key.get_secret_value()}",
|
||||
"Authorization": f"Bearer {api_key}",
|
||||
"Content-Type": "application/json",
|
||||
}
|
||||
if settings.openai_org_id:
|
||||
|
||||
Reference in New Issue
Block a user