Answer where asked, wait on a merge, and let the driver title PRs
CI / checks (push) Skipped
CI / checks (pull_request) Successful in 2m17s

From the new loop's first live run (sandbox #255, PR #256):
- A question asked on the PR is answered on the PR (an inline one quoted
  with its file and line, since the API can't reply in its thread), with
  a pointer in the item's Matrix thread; one asked in Matrix stays there.
- wait_for_review: when a review needs no change, or only the operator's
  merge is left, the item waits on the merge instead of on an answer.
- finish_milestone takes the PR's title from the driver.
The e2e test's merge waits out Gitea's brief 'try again later' after a
push.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
This commit is contained in:
dongarandClaude Opus 5.5 committed 2026-10-03 17:29:28 +00:00
1 parent bf416cad09
commit 651551aab4
6 files changed
+198 -13

No files matched your search

+11 -1
View File
@@ -55,9 +55,19 @@ FINISH_MILESTONE = _tool(
"your fix to the PR. Ends your turn; you continue when the PR is "
"reviewed or merged.",
summary="What the milestone did and how it was verified, for the PR.",
title="A short title for the PR (ignored when pushing a review fix).",
)
WAIT_FOR_REVIEW = _tool(
"wait_for_review",
"Nothing more to do until the operator reviews or merges the PR (you "
"can't merge it yourself): say so and wait. You continue when there's a "
"new comment, or when it merges or closes.",
note="What you're waiting on, for the operator.",
)
WAITING = frozenset({"restate", "ask_human", "close_item", "finish_milestone"})
WAITING = frozenset(
{"restate", "ask_human", "close_item", "finish_milestone", "wait_for_review"}
)
def names(tools: list[dict[str, Any]]) -> set[str]: