mirror of
https://github.com/Sea-Haven-Industries/open-swe.git
synced 2026-09-30 15:03:16 +00:00
40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
|
|
"""Tool: read this reviewer's past finding outcomes for the repo under analysis.
|
||
|
|
|
||
|
|
Surfaces findings that were later confirmed (resolved by a commit / 👍) vs
|
||
|
|
dismissed (false positive / 👎), so the analyzer can promote the bug patterns
|
||
|
|
this team actually fixes and add the noisy ones to a skip-list.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
from langgraph.config import get_config
|
||
|
|
|
||
|
|
from ..utils.reviewer_outcomes import read_outcomes_for_repo
|
||
|
|
|
||
|
|
|
||
|
|
def read_finding_outcomes(limit: int = 60) -> dict[str, Any]:
|
||
|
|
"""Return confirmed and dismissed past findings for the repo being analyzed.
|
||
|
|
|
||
|
|
Call this before synthesizing the style prompt. Use the ``confirmed``
|
||
|
|
findings to reinforce what to hunt for and the ``dismissed`` findings to
|
||
|
|
build the "do not flag" list.
|
||
|
|
"""
|
||
|
|
config = get_config()
|
||
|
|
configurable = config.get("configurable") or {}
|
||
|
|
full_name = configurable.get("review_style_full_name")
|
||
|
|
if not isinstance(full_name, str) or "/" not in full_name:
|
||
|
|
return {"ok": False, "error": "no repo under analysis", "confirmed": [], "dismissed": []}
|
||
|
|
|
||
|
|
outcomes = read_outcomes_for_repo(full_name, limit=limit)
|
||
|
|
confirmed = outcomes["confirmed"]
|
||
|
|
dismissed = outcomes["dismissed"]
|
||
|
|
return {
|
||
|
|
"ok": True,
|
||
|
|
"repo": full_name,
|
||
|
|
"counts": {"confirmed": len(confirmed), "dismissed": len(dismissed)},
|
||
|
|
"confirmed": confirmed,
|
||
|
|
"dismissed": dismissed,
|
||
|
|
}
|