514 Commits

Author SHA1 Message Date
zhangzherui 95feafa3b2 fix: isolate delegated task branches
Merge https://github.com/google/adk-python/pull/6495

Fixes #6457

PiperOrigin-RevId: 954877821
2026-07-27 15:58:00 -07:00
George Weale f4979b5c78 fix: treat GitHub content as untrusted in the adk_team sample agents
Co-authored-by: George Weale <gweale@google.com>
PiperOrigin-RevId: 954770777
2026-07-27 12:34:13 -07:00
Haran Rajkumar d86ae20c6a feat(samples): add ManagedAgent create-and-use custom-agent sample
Add a self-contained ManagedAgent sample that provisions a custom managed-agent
resource (custom persona + server-side google_search) via `--create` / `--delete`
CLI flags, reusing the genai client on `ManagedAgent.api_client`, then drives it
with `adk web` / `adk run`.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 954729930
2026-07-27 11:16:08 -07:00
Stephen Allen 5091f0a65a feat(eval): Make live and audio evals reachable via public entrypoints
Merge https://github.com/google/adk-python/pull/6458

Live/audio agent eval was only exercisable through private internal service imports; the public surface (CLI, dev-server, AgentEvaluator) always ran non-live text inference, so users had no supported path to evaluate Live API agents with a simulated audio user.

This threads `use_live` through all three public entrypoints, fixes the live-send path so native-audio models accept simulated user audio, and lets the dev-server select an audio (`llm_audio`) user simulator over HTTP. Live transcriptions are consolidated to text, with the text response preferred as the gradable output for turns carrying both audio and a transcript.

Adds a runnable sample (`live_non_blocking_tool_agent` evalset + `test_config` with `use_live: true` and a Gemini TTS audio simulator) plus unit tests covering `use_live` propagation, request validation, resampling, and the realtime-audio send path.

COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6458 from allen-stephen:feat/live-eval-parity 3fc33a2616d1515c822387deb8d70c27d5bc6244
PiperOrigin-RevId: 954725627
2026-07-27 11:08:51 -07:00
Ankit Ranjan 096ecfcf56 docs: fix broken relative links in documentation
Merge https://github.com/google/adk-python/pull/6489

Fixes four broken relative links in the documentation.

PiperOrigin-RevId: 954428272
2026-07-26 23:20:50 -07:00
Haran Rajkumar 481fe21cff feat: Add user_simulation ADK eval sample
Add contributing/samples/evaluation/user_simulation/, demonstrating
hallucinations_v1 and per_turn_user_simulator_quality_v1 with a dynamically
simulated user, run via `adk eval` over the shared home-automation agent.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952613097
2026-07-23 02:01:05 -07:00
Haran Rajkumar 852a66ad62 feat: Add rubric_criteria ADK eval sample
Add contributing/samples/evaluation/rubric_criteria/, demonstrating
rubric_based_final_response_quality_v1 and rubric_based_tool_use_quality_v1
run via `adk eval` over the shared home-automation agent.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952612418
2026-07-23 01:59:46 -07:00
Haran Rajkumar 0f0fa6bb4a feat: Add llm_judge_match ADK eval sample
Add contributing/samples/evaluation/llm_judge_match/, demonstrating
final_response_match_v2 (LLM-judged semantic response match) run via
`adk eval` over the shared home-automation agent.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952611733
2026-07-23 01:58:23 -07:00
Haran Rajkumar f71d9df917 feat: Add custom_metric ADK eval sample
Add contributing/samples/evaluation/custom_metric/, demonstrating a
user-defined temperature_safety_score metric plugged into `adk eval` over the
shared home-automation agent.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952602145
2026-07-23 01:36:06 -07:00
Haran Rajkumar 57a34ba77a feat: Add test_file_vs_evalset ADK eval sample
Add contributing/samples/evaluation/test_file_vs_evalset/, showing that
.test.json and .evalset.json share the same EvalSet schema and both run via
`adk eval`: a single-turn .test.json and a multi-session .evalset.json over
the shared home-automation agent.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952586726
2026-07-23 01:01:36 -07:00
Haran Rajkumar fdebd9d563 feat: Add basic_criteria ADK eval sample
Add contributing/samples/evaluation/basic_criteria/, demonstrating the
deterministic built-in metrics tool_trajectory_avg_score and
response_match_score against the shared home-automation agent, run via
`adk eval`.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952586163
2026-07-23 01:00:00 -07:00
Haran Rajkumar 6ba41ef35e feat: Add ADK evaluation samples: shared home-automation agent
Start contributing/samples/evaluation/, a family of single-concept samples that
demonstrate ADK evaluation through the `adk eval` CLI over one shared agent.

This first change adds the foundation shared by every sub-sample:

- home_automation_agent/: the shared agent (device-control tools) that all
  sub-samples evaluate.
- README.md: an overview of the family and how each sub-sample is run.

Subsequent changes each add one single-concept sub-sample folder.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 952558506
2026-07-22 23:53:04 -07:00
Anas Khan 13e311b0e4 chore: add codespell pre-commit hook to catch typos
Merge https://github.com/google/adk-python/pull/6406

Add a codespell hook to catch typos automatically.
Fix existing typos flagged by codespell.

PiperOrigin-RevId: 952416492
2026-07-22 17:13:05 -07:00
Google Team Member 217a90a2e6 feat(eventarc): add Eventarc Advanced toolset for ADK
This adds a new integration for Google Cloud Eventarc Advanced.
Provides `eventarc_toolset` which allows LLM agents to publish structured
CloudEvents. It strictly validates and sanitizes attributes according to the
CloudEvents 1.0 specification and supports dynamically resolving fields like `time`
and `id` at runtime using lambdas.

Includes comprehensive testing and documentation.

PiperOrigin-RevId: 952384562
2026-07-22 16:04:53 -07:00
Google Team Member d4f157d2ed feat(eventarc): add Eventarc Advanced toolset for ADK
PiperOrigin-RevId: 952241614
2026-07-22 11:39:34 -07:00
Haran Rajkumar 597fac3a4f docs(agents): add system-instruction sample and guide section
Add a runnable sample under
contributing/samples/managed_agent/system_instruction demonstrating the new
ManagedAgent.instruction field, and document the field in the ManagedAgent
guide.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 951709300
2026-07-21 14:46:43 -07:00
dependabot[bot] 9cf295d452 chore: bump pyjwt from 2.10.1 to 2.13.0
Merge https://github.com/google/adk-python/pull/6414

PiperOrigin-RevId: 949209003
2026-07-16 17:02:52 -07:00
Shangjie Chen 00760f8455 feat: Support HITL resumption for standalone nodes and NodeTool
- Enable resumability and add Human-in-the-Loop (HITL) step to `node_as_tool` sample workflow.
- Update `node_as_tool` README to document the HITL multi-turn flow.
- Fix `agent_test_runner.py` to preserve the `branch` field when replaying user events in tests.
- Implement lazy rehydration of `resume_inputs` from `session.events` in `NodeRunner` for standalone nodes (e.g. nodes run as tools of an Agent). This allows standalone nodes to resume correctly.

Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 948503030
2026-07-15 13:07:08 -07:00
George Weale 3fb8c7e5a0 chore: limit PR triaging agent to labeling and assigning
Drop the comment-posting tool so the sample bot only labels PRs and
assigns the component owner, instead of writing free-text responses.

Co-authored-by: George Weale <gweale@google.com>
PiperOrigin-RevId: 948086786
2026-07-14 21:38:22 -07:00
Liang Wu 7c11f5861f fix(samples): Fix monitor_video_stream in live bidi streaming sample
- Fix TypeError by adding required model parameter to generate_content call.
- Support Vertex AI (GCP) authentication via gcloud credentials by allowing Client configuration via environment variables.
- Fix deadlock by yielding correct type (string count) instead of full GenerateContentResponse from monitor_video_stream.
- Clean up duplicate imports.
- Update agent system instruction with CRITICAL warning to restrict calling monitor tools to at most once per request and explain the background streaming behavior.
- Improve monitor tools (video and stock) docstrings with CRITICAL warnings to instruct the model to call them only once and wait for background updates.

Co-authored-by: Liang Wu <wuliang@google.com>
PiperOrigin-RevId: 947835801
2026-07-14 12:20:01 -07:00
Haihan Jiang de4ac2d93f fix: make discussion answering model configurable
Merge https://github.com/google/adk-python/pull/6113

## Summary
- Configure the discussion answering agents through `LLM_MODEL_NAME` instead of
hardcoding `gemini-3.5-flash`.
- Let the GitHub workflow override both the answering model and Vertex location
with repository variables.
- Downgrade the default model from `gemini-3.5-flash` to `gemini-2.5-flash` because
`gemini-3.5-flash` 404s on Vertex AI Search (#6104).
- Document the new knobs.

Fixes #6104

## Testing
- `git diff --check`
- `python3.12 -m py_compile contributing/samples/adk_team/adk_answering_agent/settings.py contributing/samples/adk_team/adk_answering_agent/agent.py contributing/samples/adk_team/adk_answering_agent/gemini_assistant/agent.py`

Co-authored-by: Kathy Wu <wukathy@google.com>
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6113 from Haihan-Jiang:codex/adk-python-answering-model-config aea24eab14eaf479b7d42f59f25a94e0baa713a5
PiperOrigin-RevId: 947224603
2026-07-13 13:52:42 -07:00
Xuan Yang b8a1dabf9e docs: Update models owner for ADK PR triaging agent
Co-authored-by: Xuan Yang <xygoogle@google.com>
PiperOrigin-RevId: 947217639
2026-07-13 13:39:51 -07:00
adilburaksen f00fc5a329 fix: confine docs-agent file tools to the managed repos directory
Merge https://github.com/google/adk-python/pull/5996

The `adk_documentation` sample tools (`read_local_git_repo_file_content`,
`list_directory_contents`, `search_local_git_repo`, and the file-writing
step of `create_pull_request_from_changes`) are invoked by autonomous
agents (`adk_docs_updater`, `adk_release_analyzer`) that run non-interactively
in GitHub Actions and process untrusted input — GitHub issue bodies and
release diffs.

This change keeps the tools within their intended sandbox by resolving
symlinks and `..` segments, then requiring results to stay inside the
managed repositories directory.

PiperOrigin-RevId: 947146756
2026-07-13 11:24:04 -07:00
Haran Rajkumar cc444b6cbf docs(samples): add ManagedAgent remote MCP (Maps Grounding Lite) sample
Add a runnable sample wiring `ManagedAgent` to the Maps Grounding Lite MCP
server via `RemoteMcpServer`, with a `header_provider` callback that reads
`GOOGLE_MAPS_API_KEY` and sends it as the `X-Goog-Api-Key` header. Demonstrates
server-side remote MCP execution with runtime header minting.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 947137422
2026-07-13 11:07:40 -07:00
Haran Rajkumar 57e1ba66ee docs(samples): Add ManagedAgent single-turn sub-agent sample
Add a runnable sample under contributing/samples/managed_agent/single_turn
showing a local LlmAgent coordinator that calls two server-backed ManagedAgent
specialists (server-side google_search and code execution) as single-turn
sub-agents (mode='single_turn'). ADK auto-wraps each single-turn sub-agent as an
inline tool, so the coordinator stays in control and can call both specialists
within one turn; unlike AgentTool, the specialists' internal events are
preserved in the shared session. The sample exposes a root_agent in agent.py and
ships a README covering setup and example prompts.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 945969891
2026-07-10 17:32:20 -07:00
Shangjie Chen f3f602f1fa docs(samples): Remove NOT WORKING YET comments from workflow samples
Confirmed that all 4 workflow samples work correctly.

Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 945814768
2026-07-10 11:38:08 -07:00
George Weale ee3a3815a1 fix: repair two broken contributing samples
jira_agent passed tool_name to ApplicationIntegrationToolset, which only
accepts tool_name_prefix. hello_world_litellm_add_function_to_prompt
failed at import because langchain-core 1.x no longer auto-imports
langchain_core.tools, which convert_to_openai_function relies on.

Co-authored-by: George Weale <gweale@google.com>
PiperOrigin-RevId: 945809141
2026-07-10 11:27:07 -07:00
Shangjie Chen 9d306f5d32 feat(workflow): Support state-based resumption for task-mode agent workflow nodes
- Decouple task-mode node execution from default output binding so standard text output does not prematurely finish the node.
- Enhance the runner to automatically resolve and reuse the invocation_id of active suspended task nodes.
- Route incoming plain text resume messages to the active task node by mapping to its isolation scope.
- Enforce strict concurrency serialization by suspending parallel branch execution when a task node is waiting for user input.
- Align schema validation helpers to cleanly handle Content wrapping and raw JSON strings.

Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 945423735
2026-07-09 18:40:44 -07:00
Google Team Member 5e3fa3be4b chore: Update BigQuery MCP endpoint in the sample agent to support mTLS
PiperOrigin-RevId: 945382785
2026-07-09 16:49:54 -07:00
Liang Wu 5620d8f4f1 feat(live): Run non-blocking tools in a background task
This change introduces logic to identify and execute tools that are non-blocking in a separate asyncio task. The function now returns immediately for these tools, and the tool's response is sent back through the LiveRequestQueue when the background task completes.

Co-authored-by: Liang Wu <wuliang@google.com>
PiperOrigin-RevId: 945327698
2026-07-09 14:50:20 -07:00
Kathy Wu ed579c1304 feat: Add search agents and search MCP severs to agent registry
Co-authored-by: Kathy Wu <wukathy@google.com>
PiperOrigin-RevId: 945244717
2026-07-09 12:04:27 -07:00
Vaibhav Patel f41bc79922 ADK changes
Co-authored-by: Xuan Yang <xygoogle@google.com>
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6187 from vaibhav-patel:fix/5871-a2a-hitl-sample 028cee97a716ed9c1e9357f70fdc7b9ba2ed9f27
PiperOrigin-RevId: 945223172
2026-07-09 11:29:13 -07:00
noerog 7543be8e92 chore: Update sample query in README for clarity
Merge https://github.com/google/adk-python/pull/6341

### Checklist

- [X] I have read the [CONTRIBUTING.md](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) document.

Co-authored-by: Shangjie Chen <deanchen@google.com>
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/6341 from noerog:patch-1 906f11b3edd7adc344260aa4ee4b12487443d07d
PiperOrigin-RevId: 944866418
2026-07-08 20:53:47 -07:00
Xuan Yang 989af4d81e docs: Fix token exceeded error on ADK release analyzer's final summary agent
Co-authored-by: Xuan Yang <xygoogle@google.com>
PiperOrigin-RevId: 944711030
2026-07-08 14:46:44 -07:00
Haran Rajkumar 3834c0bdb6 docs(samples): Link ManagedAgent sample READMEs to the guide
Point the basic and code-execution managed_agent sample READMEs at the common
ManagedAgent guide for setup, authentication, backends, and background, now that
that general content is consolidated in the guide.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 944601306
2026-07-08 11:18:08 -07:00
k4w_wak a721c1eb34 fix(security): enable Jinja2 autoescape to prevent XSS in gepa sample
Merge https://github.com/google/adk-python/pull/5526

## Security Fix: XSS via Jinja2 Template Injection (CWE-79)

### Vulnerability
`contributing/samples/gepa/rater_lib.py` instantiates `jinja2.Environment()` **without** `autoescape=True`. The companion template `rubric_validation_template.txt` renders `{{user_input}}` and `{{model_response}}` without escaping.

### Impact
Since ADK is Google's official framework for building AI agents, developers copy/adapt this sample code into production web applications. Unescaped user-controlled input in Jinja2 templates enables:

- **Cross-Site Scripting (XSS)** — Arbitrary JavaScript execution in browsers
- **Session Hijacking** — Steal cookies/tokens if rendered in web context
- **Phishing** — Inject fake login forms

### Proof of Concept
```python
# user_input: <script>alert("XSS")</script>
# Renders as: <main_prompt><script>alert("XSS")</script></main_prompt>

# model_response: <img src=x onerror=alert("XSS from model")>
# Renders as: <responses><img src=x onerror=alert("XSS from model")></responses>
```

### Changes
1. **rater_lib.py:170** — `jinja2.Environment()` → `jinja2.Environment(autoescape=True)`
2. **rubric_validation_template.txt:158** — `{{user_input}}` → `{{user_input|e}}`
3. **rubric_validation_template.txt:163** — `{{model_response}}` → `{{model_response|e}}`

Defense in depth: `autoescape=True` provides baseline protection, explicit `|e` filters ensure escaping even if autoescape is later disabled.

### References
- CWE-79: Cross-site Scripting (XSS)
- OWASP A7:2017 — Cross-site Scripting
- Jinja2 docs: https://jinja.palletsprojects.com/en/3.1.x/api/#autoescaping

Co-authored-by: Shangjie Chen <deanchen@google.com>
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/5526 from k4w-wak:fix/jinja2-xss-autoescape b5b6d3eee616aa95c6a06ced4053fdc0745d5e0a
PiperOrigin-RevId: 943549514
2026-07-06 16:17:10 -07:00
Haran Rajkumar 527e3c1089 docs(samples): Add ManagedAgent code-execution sample
Add a runnable sample under contributing/samples/managed_agent/code_execution
showing how to use ManagedAgent with the server-side code execution tool. Since
ManagedAgent has no code_executor field, code execution is enabled by passing the
raw types.Tool(code_execution=types.ToolCodeExecution()) config in tools. The
sample exposes a root_agent in agent.py and ships a README plus a matching
single-turn live integration test that verifies a code-executed prime-sum
computation.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 943548907
2026-07-06 16:15:37 -07:00
Haran Rajkumar 969909f2ba docs(samples): Add ManagedAgent sample using server-side google_search
Add a runnable sample under contributing/samples/managed_agent/basic showing how
to use ManagedAgent (backed by the Managed Agents API) with the server-side
google_search tool, mirroring the live integration test flow. The sample
exposes a root_agent in agent.py and ships a README covering the required
enterprise/ADC setup and example prompts (including a multi-turn follow-up that
reuses the recovered remote sandbox).

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 943536117
2026-07-06 15:48:57 -07:00
Shangjie Chen 1263ed64e3 feat: Implement Workflow as Tool core feature
Introduce NodeTool, allowing individual Nodes and entire Workflows to be wrapped and executed as standard ADK Tools.

This PR implements the core, single-turn execution capability:
- Support auto-wrapping of BaseNode (Workflows) directly in Agent.tools.
- Wrapping synchronous and asynchronous function nodes as NodeTools.
- Providing a complete sample workflow demonstrating how to run a workflow as a tool.

Resumption and multi-turn nested HITL support are skipped in this PR and will be fully enabled in the later PR.

Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 943499058
2026-07-06 14:32:39 -07:00
George Weale ade8577745 fix: drop nonexistent log_query tool from session_state_agent sample
The instruction told the model to use a `log_query` tool that is not
registered on the agent, so when the model followed it the run failed
with "Tool 'log_query' not found". That made the integration_test
presubmit, which runs this sample, flaky. Reword the instruction to
just reply, matching the sample's documented output.

Co-authored-by: George Weale <gweale@google.com>
PiperOrigin-RevId: 943350141
2026-07-06 09:59:53 -07:00
Xuan Yang df6baf4acf feat(integrations): Add DaytonaEnvironment for remote sandbox workspaces
Co-authored-by: Xuan Yang <xygoogle@google.com>
PiperOrigin-RevId: 941353505
2026-07-01 16:27:10 -07:00
Shangjie Chen 5735690d55 refactor: Align single-turn subagent branch scoping with function_call_id
Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 941318373
2026-07-01 15:11:30 -07:00
George Weale be23327b03 chore: remove the issue triaging agent
The agent ran on a schedule with a write-scoped GitHub token while feeding
attacker-controlled issue title and body straight into its prompt, so a
crafted issue could steer its labeling and owner-assignment actions.
Removing the agent and its workflow removes that exposure.

Co-authored-by: George Weale <gweale@google.com>
PiperOrigin-RevId: 941289396
2026-07-01 14:15:55 -07:00
Haran Rajkumar 9d0a5a8615 test(samples): add replay tests for the interactions_api sample
Add replay test fixtures covering the documented flows of the
contributing/samples/models/interactions_api sample (basic text, Google
Search grounding, multi-turn stateful recall, and a custom function
tool), so the sample is exercised by tests/unittests/test_samples.py.

Also fix the shared sample test harness (cli/agent_test_runner.py) to
support the Interactions API:

- Exclude the volatile interaction_id (a server-issued token) and
  turn_complete fields from fixture comparison and from rebuilt
  fixtures, matching how other non-reproducible fields (timestamps,
  usage metadata, etc.) are already handled. The Interactions API
  stamps these onto every model response and the replay MockModel
  cannot reproduce them.
- Drive all turns of a fixture rebuild on a single persistent event
  loop. The sync Runner.run() uses asyncio.run() per call, which closes
  the loop the model's cached async api_client is bound to, so
  subsequent turns fail with "Event loop is closed" and corrupt
  multi-turn fixtures. Reusing one loop keeps the cached client valid
  across the conversation.

Co-authored-by: Haran Rajkumar <haranrk@google.com>
PiperOrigin-RevId: 940691339
2026-06-30 15:31:21 -07:00
Kathy Wu 3962d0bca8 fix: Add debug level logging to mcp sse agent sample
We gated the HTTP debug info behind debug level logging - this fixes the sample agent so that it returns the debug info

Co-authored-by: Kathy Wu <wukathy@google.com>
PiperOrigin-RevId: 940676911
2026-06-30 15:04:41 -07:00
Google Team Member 46dadbeb1f chore: Update telemetry owner
PiperOrigin-RevId: 940282321
2026-06-30 00:31:51 -07:00
Shangjie Chen 8a7656b857 refactor(ci): Consolidate compliance checks into pre-commit hook
Move custom file compliance checks (logger pattern, future annotations,
cli imports, mTLS endpoints) from GHA inline bash scripts to a unified
python script (compliance_checks.py) and expose it as a local pre-commit hook.
Remove the compliance-check job from CI workflow.

Co-authored-by: Shangjie Chen <deanchen@google.com>
PiperOrigin-RevId: 940081615
2026-06-29 15:59:28 -07:00
Kathy Wu 4c4f77ae39 feat: HTTP traces for MCP server requests/errors
Co-authored-by: Kathy Wu <wukathy@google.com>
PiperOrigin-RevId: 938200678
2026-06-25 14:38:56 -07:00
Xuan Yang 8679aa8e95 docs: Sort PRs by update time in list_untriaged_pull_requests
Co-authored-by: Xuan Yang <xygoogle@google.com>
PiperOrigin-RevId: 937462665
2026-06-24 11:34:22 -07:00
Xuan Yang dbd4bb07d0 docs: Add manual batch mode trigger for ADK Pull Request Triaging workflow
Co-authored-by: Xuan Yang <xygoogle@google.com>
PiperOrigin-RevId: 936929363
2026-06-23 15:33:36 -07:00