61 lines
1.8 KiB
Python
61 lines
1.8 KiB
Python
|
|
"""Phase 9: Codebase-Wide Refactoring & Optimization.
|
||
|
|
|
||
|
|
Performs a "Deep Audit" of the codebase to identify bottlenecks and vulnerabilities.
|
||
|
|
"""
|
||
|
|
|
||
|
|
import logging
|
||
|
|
import json
|
||
|
|
from typing import List, Dict, Any
|
||
|
|
from agent.gemini_adapter import GeminiAdapter
|
||
|
|
|
||
|
|
logger = logging.getLogger(__name__)
|
||
|
|
|
||
|
|
class CodeRefactorer:
|
||
|
|
def __init__(self):
|
||
|
|
self.adapter = GeminiAdapter()
|
||
|
|
|
||
|
|
def audit_codebase(self, file_contents: Dict[str, str]) -> Dict[str, Any]:
|
||
|
|
"""Performs a deep audit of the provided codebase files."""
|
||
|
|
logger.info(f"Auditing {len(file_contents)} files for refactoring and optimization.")
|
||
|
|
|
||
|
|
# Combine file contents for context
|
||
|
|
context = "\n".join([f"--- {path} ---\n{content}" for path, content in file_contents.items()])
|
||
|
|
|
||
|
|
prompt = f"""
|
||
|
|
Codebase Context:
|
||
|
|
{context}
|
||
|
|
|
||
|
|
Please perform a 'Deep Audit' of this codebase.
|
||
|
|
Identify:
|
||
|
|
1. Performance bottlenecks (e.g., inefficient loops, redundant API calls).
|
||
|
|
2. Security vulnerabilities (e.g., hardcoded keys, PII leaks, insecure defaults).
|
||
|
|
3. Architectural debt (e.g., tight coupling, lack of modularity).
|
||
|
|
|
||
|
|
Generate a set of 'Refactoring Patches' to address these issues.
|
||
|
|
|
||
|
|
Format the output as JSON:
|
||
|
|
{{
|
||
|
|
"audit_report": "...",
|
||
|
|
"vulnerabilities": [...],
|
||
|
|
"performance_issues": [...],
|
||
|
|
"patches": [
|
||
|
|
{{
|
||
|
|
"file": "...",
|
||
|
|
"description": "...",
|
||
|
|
"original_code": "...",
|
||
|
|
"replacement_code": "..."
|
||
|
|
}}
|
||
|
|
]
|
||
|
|
}}
|
||
|
|
"""
|
||
|
|
result = self.adapter.generate(
|
||
|
|
model="gemini-3.1-pro-preview",
|
||
|
|
prompt=prompt,
|
||
|
|
system_instruction="You are Timmy's Code Refactorer. Your goal is to make the codebase as efficient, secure, and sovereign as possible.",
|
||
|
|
thinking=True,
|
||
|
|
response_mime_type="application/json"
|
||
|
|
)
|
||
|
|
|
||
|
|
audit_data = json.loads(result["text"])
|
||
|
|
return audit_data
|