import copy import random from typing import Any, Dict, List _COMMIT_POOL = [ {"hash": "a1b2c3d", "message": "fix: null pointer in auth middleware", "author": "alice", "files": ["auth/middleware.py"], "service": "auth"}, {"hash": "e4f5g6h", "message": "feat: rate limiting for API gateway", "author": "bob", "files": ["gateway/ratelimit.py"], "service": "api-gateway"}, {"hash": "i7j8k9l", "message": "refactor: database connection pool", "author": "carol", "files": ["db/pool.py"], "service": "auth"}, {"hash": "m1n2o3p", "message": "fix: SQL injection in user search", "author": "dave", "files": ["search/query.py"], "service": "search"}, {"hash": "q4r5s6t", "message": "perf: Redis session caching", "author": "eve", "files": ["payments/session.py"], "service": "payments"}, {"hash": "u7v8w9x", "message": "feat: dark mode dashboard", "author": "frank", "files": ["frontend/theme.js"], "service": "notifications"}, {"hash": "y1z2a3b", "message": "fix: XSS in comment renderer", "author": "alice", "files": ["frontend/comments.jsx"], "service": "notifications"}, {"hash": "c4d5e6f", "message": "docs: API authentication guide", "author": "bob", "files": ["docs/auth.md"], "service": "auth"}, {"hash": "g7h8i9j", "message": "feat: CSV data export endpoint", "author": "carol", "files": ["api/export.py"], "service": "api-gateway"}, {"hash": "k1l2m3n", "message": "fix: websocket memory leak", "author": "dave", "files": ["payments/ws.py"], "service": "payments"}, {"hash": "p2q3r4s", "message": "fix: checkout timeout on slow networks", "author": "eve", "files": ["checkout/flow.py"], "service": "checkout"}, {"hash": "t5u6v7w", "message": "perf: inventory cache warm-up", "author": "frank", "files": ["inventory/cache.py"], "service": "inventory"}, ] _PR_POOL = [ {"id": "PR-101", "title": "Fix auth rate limiting bug", "author": "alice", "status": "merged", "service": "auth"}, {"id": "PR-102", "title": "Add payment retry logic", "author": "bob", "status": "open", "service": "payments"}, {"id": "PR-103", "title": "Search index optimization", "author": "carol", "status": "merged", "service": "search"}, {"id": "PR-104", "title": "Gateway health check endpoint", "author": "dave", "status": "open", "service": "api-gateway"}, {"id": "PR-105", "title": "Checkout flow improvements", "author": "eve", "status": "merged", "service": "checkout"}, ] class CodebaseApp: def __init__(self, seed: int, services: List[str]): rng = random.Random(seed + 1337) relevant = [c for c in _COMMIT_POOL if c["service"] in services] other = [c for c in _COMMIT_POOL if c["service"] not in services] pool = relevant + rng.sample(other, min(3, len(other))) self.commits = rng.sample(pool, min(8, len(pool))) self.prs = [p for p in _PR_POOL if p["service"] in services] def list_commits(self, args: Dict[str, Any]) -> Dict[str, Any]: query = args.get("query", "").lower() service = args.get("service") limit = min(args.get("limit", 10), 20) offset = args.get("offset", 0) results = self.commits if query: results = [c for c in results if query in c["message"].lower() or query in c["hash"]] if service: results = [c for c in results if c.get("service") == service] return {"ok": True, "data": results[offset: offset + limit], "total": len(results)} def get_commit(self, args: Dict[str, Any]) -> Dict[str, Any]: h = args.get("hash", "") for c in self.commits: if c["hash"].startswith(h): return {"ok": True, "data": copy.deepcopy(c)} return {"ok": False, "error": f"Commit '{h}' not found"} def list_prs(self, args: Dict[str, Any]) -> Dict[str, Any]: status = args.get("status") results = self.prs if not status else [p for p in self.prs if p["status"] == status] return {"ok": True, "data": copy.deepcopy(results)}