feat: PM-Agent also need to look at PR comments
gate / gate (pull_request) Successful in 2m55s
images / images (pull_request) Successful in 1m10s
gate / conformance (pull_request) Has been skipped

From Gitea issue #116.

Authored by the PM agent's worker; the merge gate is the approver. Refs #116.

Agent: pm-agent (issue #116, mode implement)
This commit is contained in:
pm-agent committed 2026-11-07 05:18:24 +00:00
1 parent 5b484f6b78
commit 2fdb95393c
9 files changed
+2055 -32

No files matched your search

+53
View File
@@ -129,6 +129,59 @@ data:
# runbooks/pm-agent.md.
PM_DRY_RUN: "false"
# --- mentions on a pull request (issue #116) --------------------------------
# OFF. Turning it on makes the dispatcher also look at PULL REQUESTS: a mention of the bot
# account in a pull request's conversation, or inside an inline review thread, makes the PM
# read that pull request and reply in that same thread, and follow-up comments in a thread
# that already holds a mention continue the conversation with no new mention. It can ONLY
# reply — a mention cannot start, revise or push a branch; that is the second half of
# issue #116 and has its own issue.
#
# WHY IT SHIPS OFF. Not one call on this path has been made against the live Gitea — the
# branch that wrote it held no Gitea credential and no cluster — and the cheap mention
# query it prefers needs a token scope the bot does not have today (see
# PM_PR_MENTION_DISCOVERY). The intended order is: set PM_PLAN once and read what it would
# have replied to, then set this to "true". Both are ConfigMap edits plus a
# config-generation bump.
PM_PR_MENTIONS: "false"
# How candidate pull requests are found. `auto` tries Gitea's notification list for the bot
# account first — one bounded call, which is the "way to check for '@'s for the bot account
# instead of scouring the entire pull request list" the operator asked for — and falls back
# to listing open pull requests if that is refused. `notifications` uses only the cheap
# query and does nothing if it is unavailable (it will not silently widen into the scan the
# operator rejected). `pulls` never calls the notification endpoint.
#
# EXPECT THE FALLBACK AT FIRST. Gitea puts /api/v1/notifications behind its own
# `notification` token scope, and the bot's token is minted
# `read:user, write:repository, write:issue, read:package` — so until the operator re-mints
# it with `read:notification`, the cheap query is refused and the dispatcher logs exactly
# that, naming the scope. Which query answered is logged every cycle either way.
PM_PR_MENTION_DISCOVERY: "auto"
# How far back the notification query looks. Longer costs nothing but a bigger response;
# shorter risks missing a mention the dispatcher was down for. A day is well inside the
# idempotency marker's reach, which does not expire at all.
PM_PR_NOTIFICATION_LOOKBACK_SECONDS: "86400"
# The same throttle shape as the issue path: one decision per pull request per cooldown
# window, and at most this many replies per poll.
PM_PR_COOLDOWN_SECONDS: "900"
PM_PR_MAX_REPLIES_PER_CYCLE: "1"
# How much of the change the PM is shown. The changed-file summary is always included; this
# caps the diff quoted beneath it. Set to "0" to send the file list alone — the right
# setting if the diffs here turn out to dominate the decision's token cost.
PM_PR_DIFF_MAX_CHARS: "20000"
PM_PR_MAX_CHANGED_FILES: "200"
# Plan mode for the pull-request path: discover, assemble the payload, PRINT it to the
# dispatcher's stdout, ask no model and post nothing. Setting it also enables the path, so
# it is one knob to look before leaping. PM_DRY_RUN above implies it, because on this path
# the posted reply IS the action under test and also the marker that changes future
# behaviour — posting it would make a dry run not dry.
PM_PLAN: "false"
# If the gate refuses a worker's change, the branch is NOT pushed by default and the issue
# gets the gate log instead. Set to "true" to push anyway and open a red pull request —
# useful when a human wants to see the work, noisy as a standing setting.