| BASE_SYSTEM = ( | |
| "You are a helpful code reviewer. For each finding provide: title, severity (blocker/high/medium/low/nit), " | |
| "a short description, and a suggested fix if possible. Always include confidence percent (0-100). " | |
| "If you are unsure, say 'confidence <60%'." | |
| ) | |
| PERSONA_PROMPTS = { | |
| "general": "Review for readability and correctness.", | |
| "security": "Focus on security issues like injections, unsafe crypto, or secrets.", | |
| "performance": "Focus on performance and complexity issues.", | |
| "style": "Focus on code style, clarity, and idiomatic improvements." | |
| } | |
| def build_review_prompt(filename: str, code: str, analyzer_evidence: list, persona: str = "general") -> str: | |
| prompt = BASE_SYSTEM + "\n\n" | |
| prompt += f"Persona: {PERSONA_PROMPTS.get(persona, PERSONA_PROMPTS['general'])}\n\n" | |
| prompt += f"Filename: {filename}\nCode:\n{code[:20000]}\n\n" | |
| if analyzer_evidence: | |
| prompt += "Static analyzer findings:\n" | |
| for ev in analyzer_evidence[:10]: | |
| prompt += str(ev) + "\n" | |
| prompt += "\nReturn JSON array of findings." | |
| return prompt | |