This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new b2a48f72aea Add --review-requested filter to breeze pr auto-triage 
(#63332)
b2a48f72aea is described below

commit b2a48f72aea34da31c839f945b6b91d2bb22c947
Author: Yeonguk Choo <[email protected]>
AuthorDate: Wed Mar 11 20:53:29 2026 +0900

    Add --review-requested filter to breeze pr auto-triage (#63332)
---
 dev/breeze/doc/images/output_pr_auto-triage.svg    | 64 ++++++++++++----------
 dev/breeze/doc/images/output_pr_auto-triage.txt    |  2 +-
 .../src/airflow_breeze/commands/pr_commands.py     | 29 ++++++++++
 .../airflow_breeze/commands/pr_commands_config.py  |  1 +
 4 files changed, 65 insertions(+), 31 deletions(-)

diff --git a/dev/breeze/doc/images/output_pr_auto-triage.svg 
b/dev/breeze/doc/images/output_pr_auto-triage.svg
index 7210505b83e..f42c66722d3 100644
--- a/dev/breeze/doc/images/output_pr_auto-triage.svg
+++ b/dev/breeze/doc/images/output_pr_auto-triage.svg
@@ -1,4 +1,4 @@
-<svg class="rich-terminal" viewBox="0 0 1482 2172.7999999999997" 
xmlns="http://www.w3.org/2000/svg";>
+<svg class="rich-terminal" viewBox="0 0 1482 2197.2" 
xmlns="http://www.w3.org/2000/svg";>
     <!-- Generated with Rich https://www.textualize.io -->
     <style>
 
@@ -43,7 +43,7 @@
 
     <defs>
     <clipPath id="breeze-pr-auto-triage-clip-terminal">
-      <rect x="0" y="0" width="1463.0" height="2121.7999999999997" />
+      <rect x="0" y="0" width="1463.0" height="2146.2" />
     </clipPath>
     <clipPath id="breeze-pr-auto-triage-line-0">
     <rect x="0" y="1.5" width="1464" height="24.65"/>
@@ -303,9 +303,12 @@
 <clipPath id="breeze-pr-auto-triage-line-85">
     <rect x="0" y="2075.5" width="1464" height="24.65"/>
             </clipPath>
+<clipPath id="breeze-pr-auto-triage-line-86">
+    <rect x="0" y="2099.9" width="1464" height="24.65"/>
+            </clipPath>
     </defs>
 
-    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2170.8" rx="8"/><text 
class="breeze-pr-auto-triage-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;pr&#160;auto-triage</text>
+    <rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" 
x="1" y="1" width="1480" height="2195.2" rx="8"/><text 
class="breeze-pr-auto-triage-title" fill="#c5c8c6" text-anchor="middle" x="740" 
y="27">Command:&#160;pr&#160;auto-triage</text>
             <g transform="translate(26,22)">
             <circle cx="0" cy="0" r="7" fill="#ff5f57"/>
             <circle cx="22" cy="0" r="7" fill="#febc2e"/>
@@ -375,33 +378,34 @@
 </text><text class="breeze-pr-auto-triage-r5" x="0" y="1410.8" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-57)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1410.8" textLength="280.6" 
clip-path="url(#breeze-pr-auto-triage-line-57)">--checks-state&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="329.4" y="1410.8" textLength="524.6" 
clip-path="url(#breeze-pr-auto-triage-line-57)">Only&#160;assess&#160;PRs&# 
[...]
 </text><text class="breeze-pr-auto-triage-r5" x="0" y="1435.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-58)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1435.2" textLength="280.6" 
clip-path="url(#breeze-pr-auto-triage-line-58)">--min-commits-behind&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="329.4" y="1435.2" textLength="878.4" 
clip-path="url(#breeze-pr-auto-triage-line-58)">Only&#160;assess&#160;PRs&#160;that&#160;are&#160;at&#160
 [...]
 </text><text class="breeze-pr-auto-triage-r5" x="0" y="1459.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-59)">│</text><text 
class="breeze-pr-auto-triage-r6" x="329.4" y="1459.6" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-59)">(INTEGER)</text><text 
class="breeze-pr-auto-triage-r5" x="1451.8" y="1459.6" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-59)">│</text><text 
class="breeze-pr-auto-triage-r1" x="1464" y="1459.6" textLength="12.2"  [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1484" textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-60)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1484" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-60)">
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1508.4" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-61)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1508.4" textLength="292.8" 
clip-path="url(#breeze-pr-auto-triage-line-61)">&#160;Pagination&#160;and&#160;sorting&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="317.2" y="1508.4" textLength="1122.4" 
clip-path="url(#breeze-pr-auto-triage-line-61)">─────────────────────────────────────────────────
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1532.8" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-62)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1532.8" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-62)">--batch-size</text><text 
class="breeze-pr-auto-triage-r1" x="195.2" y="1532.8" textLength="500.2" 
clip-path="url(#breeze-pr-auto-triage-line-62)">Number&#160;of&#160;PRs&#160;to&#160;fetch&#160;per&#160;GraphQL&#160;page.&#160;</
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1557.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-63)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1557.2" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-63)">--max-num&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="195.2" y="1557.2" textLength="793" 
clip-path="url(#breeze-pr-auto-triage-line-63)">Maximum&#160;number&#160;of&#160;non-collaborator&#160;PRs&#160;to&#16
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1581.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-64)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1581.6" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-64)">--sort&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="195.2" y="1581.6" textLength="414.8" 
clip-path="url(#breeze-pr-auto-triage-line-64)">Sort&#160;order&#160;for&#160;PR&#160;search&#160;res
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1606" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-65)">│</text><text 
class="breeze-pr-auto-triage-r6" x="195.2" y="1606" textLength="622.2" 
clip-path="url(#breeze-pr-auto-triage-line-65)">(created-asc|created-desc|updated-asc|updated-desc)</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1606" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-65)">│</text><text 
class="breeze-pr-auto-triage-r1" x= [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1630.4" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-66)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1630.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-66)">
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1654.8" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-67)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1654.8" textLength="244" 
clip-path="url(#breeze-pr-auto-triage-line-67)">&#160;Assessment&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="268.4" y="1654.8" textLength="1171.2" 
clip-path="url(#breeze-pr-auto-triage-line-67)">────────────────────────────────────────────────────────────
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1679.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-68)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1679.2" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-68)">--check-mode&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="256.2" y="1679.2" textLength="1037" 
clip-path="url(#breeze-pr-auto-triage-line-68)">Which&#160;checks&#160;to&#160;run:&#160;&#x27;both&#x
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1703.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-69)">│</text><text 
class="breeze-pr-auto-triage-r5" x="256.2" y="1703.6" textLength="61" 
clip-path="url(#breeze-pr-auto-triage-line-69)">both]</text><text 
class="breeze-pr-auto-triage-r6" x="329.4" y="1703.6" textLength="158.6" 
clip-path="url(#breeze-pr-auto-triage-line-69)">(both|ci|llm)</text><text 
class="breeze-pr-auto-triage-r5" x="1451.8" y="1703.6" textLength= [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1728" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-70)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1728" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-70)">--llm-model&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="256.2" y="1728" textLength="1183.4" 
clip-path="url(#breeze-pr-auto-triage-line-70)">LLM&#160;model&#160;for&#160;assessment&#160;(format:
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1752.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-71)">│</text><text 
class="breeze-pr-auto-triage-r1" x="256.2" y="1752.4" textLength="268.4" 
clip-path="url(#breeze-pr-auto-triage-line-71)">for&#160;OpenAI&#160;Codex&#160;CLI.&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="524.6" y="1752.4" textLength="427" 
clip-path="url(#breeze-pr-auto-triage-line-71)">[default:&#160;claude/claude-sonnet-4-6]</text><text
 c [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1776.8" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-72)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1776.8" textLength="1159" 
clip-path="url(#breeze-pr-auto-triage-line-72)">&gt;claude/claude-sonnet-4-6&lt;&#160;|&#160;claude/claude-opus-4-20250514&#160;|&#160;claude/claude-sonnet-4-20250514&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1776.8" textLength="12.2" 
clip-path="u [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1801.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-73)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1801.2" textLength="976" 
clip-path="url(#breeze-pr-auto-triage-line-73)">claude/claude-haiku-4-5-20251001&#160;|&#160;claude/sonnet&#160;|&#160;claude/opus&#160;|&#160;claude/haiku&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1801.2" textLength="12.2" 
clip-path="url(#breeze-p [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1825.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-74)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1825.6" textLength="1146.8" 
clip-path="url(#breeze-pr-auto-triage-line-74)">codex/gpt-5.3-codex&#160;|&#160;codex/gpt-5.3-codex-spark&#160;|&#160;codex/gpt-5.2-codex&#160;|&#160;codex/gpt-5.1-codex&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1825.6" textLength="12.2" 
clip-pa [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1850" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-75)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1850" textLength="695.4" 
clip-path="url(#breeze-pr-auto-triage-line-75)">codex/gpt-5-codex&#160;|&#160;codex/gpt-5-codex-mini&#160;|&#160;codex/gpt-5)</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1850" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-75)">│</text><text class="br [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1874.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-76)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1874.4" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-76)">--llm-concurrency</text><text 
class="breeze-pr-auto-triage-r1" x="256.2" y="1874.4" textLength="524.6" 
clip-path="url(#breeze-pr-auto-triage-line-76)">Number&#160;of&#160;concurrent&#160;LLM&#160;assessment&#160;calls.&#160;</tex
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1898.8" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-77)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1898.8" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-77)">
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1923.2" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-78)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1923.2" textLength="195.2" 
clip-path="url(#breeze-pr-auto-triage-line-78)">&#160;Action&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="219.6" y="1923.2" textLength="1220" 
clip-path="url(#breeze-pr-auto-triage-line-78)">────────────────────────────────────────────────────────────────
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1947.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-79)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1947.6" textLength="183" 
clip-path="url(#breeze-pr-auto-triage-line-79)">--answer-triage</text><text 
class="breeze-pr-auto-triage-r1" x="231.8" y="1947.6" textLength="1207.8" 
clip-path="url(#breeze-pr-auto-triage-line-79)">Force&#160;answer&#160;to&#160;triage&#160;prompts:&#160;[d]raft,&#160;[c]lose,&#
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1972" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-80)">│</text><text 
class="breeze-pr-auto-triage-r6" x="231.8" y="1972" textLength="183" 
clip-path="url(#breeze-pr-auto-triage-line-80)">(d|c|r|s|q|y|n)</text><text 
class="breeze-pr-auto-triage-r5" x="1451.8" y="1972" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-80)">│</text><text 
class="breeze-pr-auto-triage-r1" x="1464" y="1972" textLength="12.2" clip [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="1996.4" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-81)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1996.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-81)">
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="2020.8" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-82)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="2020.8" textLength="195.2" 
clip-path="url(#breeze-pr-auto-triage-line-82)">&#160;Common&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="219.6" y="2020.8" textLength="1220" 
clip-path="url(#breeze-pr-auto-triage-line-82)">────────────────────────────────────────────────────────────────
 [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="2045.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-83)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2045.2" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-83)">--dry-run</text><text 
class="breeze-pr-auto-triage-r7" x="158.6" y="2045.2" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-83)">-D</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2045.2" textLength="719.8" [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="2069.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-84)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2069.6" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-84)">--verbose</text><text 
class="breeze-pr-auto-triage-r7" x="158.6" y="2069.6" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-84)">-v</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2069.6" textLength="585.6" [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="2094" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-85)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2094" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-85)">--help&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r7" x="158.6" y="2094" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-85)">-h</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2094" textLength= [...]
-</text><text class="breeze-pr-auto-triage-r5" x="0" y="2118.4" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-86)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="2118.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-86)">
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1484" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-60)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1484" textLength="280.6" 
clip-path="url(#breeze-pr-auto-triage-line-60)">--review-requested&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="329.4" y="1484" textLength="817.4" 
clip-path="url(#breeze-pr-auto-triage-line-60)">Only&#160;show&#160;PRs&#160;where&#160;review&#160;i
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1508.4" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-61)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1508.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-61)">
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1532.8" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-62)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1532.8" textLength="292.8" 
clip-path="url(#breeze-pr-auto-triage-line-62)">&#160;Pagination&#160;and&#160;sorting&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="317.2" y="1532.8" textLength="1122.4" 
clip-path="url(#breeze-pr-auto-triage-line-62)">─────────────────────────────────────────────────
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1557.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-63)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1557.2" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-63)">--batch-size</text><text 
class="breeze-pr-auto-triage-r1" x="195.2" y="1557.2" textLength="500.2" 
clip-path="url(#breeze-pr-auto-triage-line-63)">Number&#160;of&#160;PRs&#160;to&#160;fetch&#160;per&#160;GraphQL&#160;page.&#160;</
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1581.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-64)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1581.6" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-64)">--max-num&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="195.2" y="1581.6" textLength="793" 
clip-path="url(#breeze-pr-auto-triage-line-64)">Maximum&#160;number&#160;of&#160;non-collaborator&#160;PRs&#160;to&#16
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1606" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-65)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1606" textLength="146.4" 
clip-path="url(#breeze-pr-auto-triage-line-65)">--sort&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="195.2" y="1606" textLength="414.8" 
clip-path="url(#breeze-pr-auto-triage-line-65)">Sort&#160;order&#160;for&#160;PR&#160;search&#160;results.&
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1630.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-66)">│</text><text 
class="breeze-pr-auto-triage-r6" x="195.2" y="1630.4" textLength="622.2" 
clip-path="url(#breeze-pr-auto-triage-line-66)">(created-asc|created-desc|updated-asc|updated-desc)</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1630.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-66)">│</text><text 
class="breeze-pr-auto-triage- [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1654.8" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-67)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1654.8" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-67)">
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1679.2" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-68)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1679.2" textLength="244" 
clip-path="url(#breeze-pr-auto-triage-line-68)">&#160;Assessment&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="268.4" y="1679.2" textLength="1171.2" 
clip-path="url(#breeze-pr-auto-triage-line-68)">────────────────────────────────────────────────────────────
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1703.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-69)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1703.6" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-69)">--check-mode&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="256.2" y="1703.6" textLength="1037" 
clip-path="url(#breeze-pr-auto-triage-line-69)">Which&#160;checks&#160;to&#160;run:&#160;&#x27;both&#x
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1728" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-70)">│</text><text 
class="breeze-pr-auto-triage-r5" x="256.2" y="1728" textLength="61" 
clip-path="url(#breeze-pr-auto-triage-line-70)">both]</text><text 
class="breeze-pr-auto-triage-r6" x="329.4" y="1728" textLength="158.6" 
clip-path="url(#breeze-pr-auto-triage-line-70)">(both|ci|llm)</text><text 
class="breeze-pr-auto-triage-r5" x="1451.8" y="1728" textLength="12.2" c [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1752.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-71)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1752.4" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-71)">--llm-model&#160;&#160;&#160;&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r1" x="256.2" y="1752.4" textLength="1183.4" 
clip-path="url(#breeze-pr-auto-triage-line-71)">LLM&#160;model&#160;for&#160;assessment&#160;(f
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1776.8" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-72)">│</text><text 
class="breeze-pr-auto-triage-r1" x="256.2" y="1776.8" textLength="268.4" 
clip-path="url(#breeze-pr-auto-triage-line-72)">for&#160;OpenAI&#160;Codex&#160;CLI.&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="524.6" y="1776.8" textLength="427" 
clip-path="url(#breeze-pr-auto-triage-line-72)">[default:&#160;claude/claude-sonnet-4-6]</text><text
 c [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1801.2" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-73)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1801.2" textLength="1159" 
clip-path="url(#breeze-pr-auto-triage-line-73)">&gt;claude/claude-sonnet-4-6&lt;&#160;|&#160;claude/claude-opus-4-20250514&#160;|&#160;claude/claude-sonnet-4-20250514&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1801.2" textLength="12.2" 
clip-path="u [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1825.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-74)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1825.6" textLength="976" 
clip-path="url(#breeze-pr-auto-triage-line-74)">claude/claude-haiku-4-5-20251001&#160;|&#160;claude/sonnet&#160;|&#160;claude/opus&#160;|&#160;claude/haiku&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1825.6" textLength="12.2" 
clip-path="url(#breeze-p [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1850" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-75)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1850" textLength="1146.8" 
clip-path="url(#breeze-pr-auto-triage-line-75)">codex/gpt-5.3-codex&#160;|&#160;codex/gpt-5.3-codex-spark&#160;|&#160;codex/gpt-5.2-codex&#160;|&#160;codex/gpt-5.1-codex&#160;|&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1850" textLength="12.2" 
clip-path="ur [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1874.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-76)">│</text><text 
class="breeze-pr-auto-triage-r6" x="256.2" y="1874.4" textLength="695.4" 
clip-path="url(#breeze-pr-auto-triage-line-76)">codex/gpt-5-codex&#160;|&#160;codex/gpt-5-codex-mini&#160;|&#160;codex/gpt-5)</text><text
 class="breeze-pr-auto-triage-r5" x="1451.8" y="1874.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-76)">│</text><text cla [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1898.8" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-77)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1898.8" textLength="207.4" 
clip-path="url(#breeze-pr-auto-triage-line-77)">--llm-concurrency</text><text 
class="breeze-pr-auto-triage-r1" x="256.2" y="1898.8" textLength="524.6" 
clip-path="url(#breeze-pr-auto-triage-line-77)">Number&#160;of&#160;concurrent&#160;LLM&#160;assessment&#160;calls.&#160;</tex
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1923.2" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-78)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="1923.2" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-78)">
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1947.6" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-79)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="1947.6" textLength="195.2" 
clip-path="url(#breeze-pr-auto-triage-line-79)">&#160;Action&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="219.6" y="1947.6" textLength="1220" 
clip-path="url(#breeze-pr-auto-triage-line-79)">────────────────────────────────────────────────────────────────
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1972" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-80)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="1972" textLength="183" 
clip-path="url(#breeze-pr-auto-triage-line-80)">--answer-triage</text><text 
class="breeze-pr-auto-triage-r1" x="231.8" y="1972" textLength="1207.8" 
clip-path="url(#breeze-pr-auto-triage-line-80)">Force&#160;answer&#160;to&#160;triage&#160;prompts:&#160;[d]raft,&#160;[c]lose,&#160;[r
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="1996.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-81)">│</text><text 
class="breeze-pr-auto-triage-r6" x="231.8" y="1996.4" textLength="183" 
clip-path="url(#breeze-pr-auto-triage-line-81)">(d|c|r|s|q|y|n)</text><text 
class="breeze-pr-auto-triage-r5" x="1451.8" y="1996.4" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-81)">│</text><text 
class="breeze-pr-auto-triage-r1" x="1464" y="1996.4" textLength="12 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2020.8" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-82)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="2020.8" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-82)">
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2045.2" 
textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-83)">╭─</text><text 
class="breeze-pr-auto-triage-r5" x="24.4" y="2045.2" textLength="195.2" 
clip-path="url(#breeze-pr-auto-triage-line-83)">&#160;Common&#160;options&#160;</text><text
 class="breeze-pr-auto-triage-r5" x="219.6" y="2045.2" textLength="1220" 
clip-path="url(#breeze-pr-auto-triage-line-83)">────────────────────────────────────────────────────────────────
 [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2069.6" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-84)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2069.6" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-84)">--dry-run</text><text 
class="breeze-pr-auto-triage-r7" x="158.6" y="2069.6" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-84)">-D</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2069.6" textLength="719.8" [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2094" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-85)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2094" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-85)">--verbose</text><text 
class="breeze-pr-auto-triage-r7" x="158.6" y="2094" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-85)">-v</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2094" textLength="585.6" clip-pa 
[...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2118.4" 
textLength="12.2" clip-path="url(#breeze-pr-auto-triage-line-86)">│</text><text 
class="breeze-pr-auto-triage-r4" x="24.4" y="2118.4" textLength="109.8" 
clip-path="url(#breeze-pr-auto-triage-line-86)">--help&#160;&#160;&#160;</text><text
 class="breeze-pr-auto-triage-r7" x="158.6" y="2118.4" textLength="24.4" 
clip-path="url(#breeze-pr-auto-triage-line-86)">-h</text><text 
class="breeze-pr-auto-triage-r1" x="207.4" y="2118.4" tex [...]
+</text><text class="breeze-pr-auto-triage-r5" x="0" y="2142.8" 
textLength="1464" 
clip-path="url(#breeze-pr-auto-triage-line-87)">╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯</text><text
 class="breeze-pr-auto-triage-r1" x="1464" y="2142.8" textLength="12.2" 
clip-path="url(#breeze-pr-auto-triage-line-87)">
 </text>
     </g>
     </g>
diff --git a/dev/breeze/doc/images/output_pr_auto-triage.txt 
b/dev/breeze/doc/images/output_pr_auto-triage.txt
index f2d3002dbd2..4bbfb2746b7 100644
--- a/dev/breeze/doc/images/output_pr_auto-triage.txt
+++ b/dev/breeze/doc/images/output_pr_auto-triage.txt
@@ -1 +1 @@
-f32e601513ba3cce3b3f42b5beeae0e5
+5d0f5d66b4acab3d4df1a3667eeda300
diff --git a/dev/breeze/src/airflow_breeze/commands/pr_commands.py 
b/dev/breeze/src/airflow_breeze/commands/pr_commands.py
index d1dcee5c863..82403bba909 100644
--- a/dev/breeze/src/airflow_breeze/commands/pr_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/pr_commands.py
@@ -281,6 +281,17 @@ def _resolve_github_token(github_token: str | None) -> str 
| None:
     return None
 
 
+_VIEWER_QUERY = """
+query { viewer { login } }
+"""
+
+
+def _resolve_viewer_login(token: str) -> str:
+    """Resolve the GitHub login of the authenticated user via the viewer 
query."""
+    data = _graphql_request(token, _VIEWER_QUERY, {})
+    return data["viewer"]["login"]
+
+
 def _graphql_request(token: str, query: str, variables: dict) -> dict:
     """Execute a GitHub GraphQL request. Returns the 'data' dict or exits on 
error."""
     import requests
@@ -608,11 +619,14 @@ def _fetch_prs_graphql(
     created_before: str | None = None,
     updated_after: str | None = None,
     updated_before: str | None = None,
+    review_requested: str | None = None,
 ) -> list[PRData]:
     """Fetch a single batch of matching PRs via GraphQL."""
     query_parts = [f"repo:{github_repository}", "type:pr", "is:open", 
"draft:false"]
     if filter_user:
         query_parts.append(f"author:{filter_user}")
+    if review_requested:
+        query_parts.append(f"review-requested:{review_requested}")
     for label in labels:
         query_parts.append(f'label:"{label}"')
     for label in exclude_labels:
@@ -1429,6 +1443,13 @@ def _approve_workflow_runs(token: str, 
github_repository: str, pending_runs: lis
     show_default=True,
     help="Only assess PRs that are at least this many commits behind base 
branch.",
 )
[email protected](
+    "--review-requested",
+    "review_requested",
+    is_flag=True,
+    default=False,
+    help="Only show PRs where review is requested for the authenticated user.",
+)
 # --- Pagination and sorting ---
 @click.option(
     "--batch-size",
@@ -1494,6 +1515,7 @@ def auto_triage(
     pending_approval_only: bool,
     checks_state: str,
     min_commits_behind: int,
+    review_requested: bool,
     check_mode: str,
     llm_concurrency: int,
     llm_model: str,
@@ -1529,6 +1551,12 @@ def auto_triage(
 
     dry_run = get_dry_run()
 
+    # Resolve --review-requested: resolve to the authenticated user
+    review_requested_user: str | None = None
+    if review_requested:
+        review_requested_user = _resolve_viewer_login(token)
+        get_console().print(f"[info]Filtering PRs with review requested for: 
{review_requested_user}[/]")
+
     # Split labels into exact (for GitHub search) and wildcard (for 
client-side filtering)
     from fnmatch import fnmatch
 
@@ -1555,6 +1583,7 @@ def auto_triage(
             created_before=created_before,
             updated_after=updated_after,
             updated_before=updated_before,
+            review_requested=review_requested_user,
         )
 
     # Apply wildcard label filters client-side
diff --git a/dev/breeze/src/airflow_breeze/commands/pr_commands_config.py 
b/dev/breeze/src/airflow_breeze/commands/pr_commands_config.py
index 31532e59f23..cd683a7dda4 100644
--- a/dev/breeze/src/airflow_breeze/commands/pr_commands_config.py
+++ b/dev/breeze/src/airflow_breeze/commands/pr_commands_config.py
@@ -45,6 +45,7 @@ PR_PARAMETERS: dict[str, list[dict[str, str | list[str]]]] = {
                 "--pending-approval-only",
                 "--checks-state",
                 "--min-commits-behind",
+                "--review-requested",
             ],
         },
         {


Reply via email to