open-swe/agent/tools
langsmith-engine[bot] 58b1d52fee
fix: publish_review HTTP 422 "Path/Line could not be resolved" — agent retries with identical args instead of dropping unresolvable findings (#1338)
* publish_review: drop unresolvable findings and retry once on GitHub 422

GitHub returns 422 with 'Path could not be resolved' or 'Line could not be
resolved' when an inline comment anchors to a file/line not in the PR diff.
Previously the agent retried publish_review with byte-identical args
multiple times before draining to skipped_empty_re_review=true, silently
losing findings.

- reviewer_publish.post_pull_request_review: parse 422 body and tag with
  _error_kind='unresolved_anchor' plus _raw_errors so callers can act.
- tools/publish_review._publish_review_async: when that signal fires,
  cross-check each finding's range against the run config's diff_line_set,
  drop the bad ones, and re-POST once with only the valid findings. Return
  unresolvable_findings + hint so the agent calls update_finding instead of
  retrying the same payload.
- reviewer.py: one-line prompt addendum telling the agent that
  unresolvable_findings means update_finding, not retry.
- tests: cover 422 tagging (path + line), the drop-and-retry success path,
  the retry-still-fails path, and the don't-blind-retry path when no
  diff_line_set is available.

* publish_review: fetch PR diff on demand for 422 retry filter

Reviewer runs clear configurable['diff_line_set'] before the agent
starts, so the unresolved-anchor retry path had no diff data to filter
against — in the reachable production case it dropped nothing and
returned success=False with empty unresolvable_findings, losing the
otherwise-valid comments.

Fall back to fetching the PR's unified diff via the GitHub REST API
and recomputing the line set on the fly when no cached set is
available. The cached set is still preferred when present.

---------

Co-authored-by: issues-agent <issues-agent@langchain.dev>
Co-authored-by: Johannes du Plessis <johannes@langchain.dev>
2026-05-26 18:37:56 -07:00
..
__init__.py feat: reconcile reviewer comment lifecycle (#1332) 2026-05-26 16:24:34 -07:00
add_finding.py fix: remove line collapsing (#1330) 2026-05-23 00:43:48 +00:00
fetch_url.py fix: Shell injection and ssrf issues (#1155) 2026-04-01 12:37:35 -07:00
http_request.py fix: harden http_request SSRF guard against DNS rebinding [closes AB-2321] (#1277) 2026-05-08 22:06:25 +00:00
linear_comment.py feat: move github workflows to gh cli (#1238) 2026-05-04 18:03:53 -07:00
linear_create_issue.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
linear_delete_issue.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
linear_get_issue.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
linear_get_issue_comments.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
linear_list_teams.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
linear_update_issue.py feat: add linear tools for listing teams, get/create/update/delete issues, and get issue comments (#1105) 2026-03-23 14:32:44 -07:00
list_findings.py feat: implement reviewer findings, publish_review, and watch mode (#1253) 2026-05-07 14:48:43 -07:00
publish_review.py fix: publish_review HTTP 422 "Path/Line could not be resolved" — agent retries with identical args instead of dropping unresolvable findings (#1338) 2026-05-26 18:37:56 -07:00
reply_to_finding_thread.py feat: reconcile reviewer comment lifecycle (#1332) 2026-05-26 16:24:34 -07:00
request_pr_review.py feat: route Slack PR review requests (#1245) 2026-05-06 17:14:43 -07:00
resolve_finding_thread.py feat: reconcile reviewer comment lifecycle (#1332) 2026-05-26 16:24:34 -07:00
save_review_style.py feat: tune reviewer for precision — web/wiki tools + recalibrated prompt (#1312) 2026-05-20 18:35:00 +00:00
slack_read_thread_messages.py feat: give agent ability to read cross-posted Slack message links [closes OPE-37] (#1200) 2026-04-29 17:42:27 -07:00
slack_thread_reply.py feat: add Slack reaction feedback to LangSmith (#1231) 2026-05-08 14:24:12 -07:00
update_finding.py feat: tune reviewer for precision — web/wiki tools + recalibrated prompt (#1312) 2026-05-20 18:35:00 +00:00
web_search.py fix: add Exa web search tool [closes: OPE-29] (#1133) 2026-03-25 16:24:31 -07:00