You've already forked adk-python
mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b0610cac8e | |||
| 97542097c9 | |||
| 0bd06c09aa | |||
| 313b042b69 | |||
| e5e15a807e | |||
| 20590deb81 | |||
| dc17c8501c |
@@ -7,49 +7,34 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## đź”´ Required Information
|
||||
*Please ensure all items in this section are completed to allow for efficient triaging. Requests without complete information may be rejected / deprioritized. If an item is not applicable to you - please mark it as N/A*
|
||||
** Please make sure you read the contribution guide and file the issues in the right place. **
|
||||
[Contribution guide.](https://google.github.io/adk-docs/contributing-guide/)
|
||||
|
||||
**Describe the Bug**
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Steps to Reproduce**
|
||||
Please provide a numbered list of steps to reproduce the behavior:
|
||||
**To Reproduce**
|
||||
Please share a minimal code and data to reproduce your problem.
|
||||
Steps to reproduce the behavior:
|
||||
1. Install '...'
|
||||
2. Run '....'
|
||||
3. Open '....'
|
||||
4. Provide error or stacktrace
|
||||
|
||||
**Expected Behavior**
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Observed Behavior**
|
||||
What actually happened? Include error messages or crash stack traces here.
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Environment Details**
|
||||
* **ADK Library Version:** (e.g., 2.0.1)
|
||||
* **Desktop OS:** (e.g., macOS, Linux, Windows)
|
||||
* **Python Version:**
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. macOS, Linux, Windows]
|
||||
- Python version(python -V):
|
||||
- ADK version(pip show google-adk):
|
||||
|
||||
**Model Information**
|
||||
* **Are you using LiteLLM:** Yes/No
|
||||
* **Which model is being used:** (e.g., gemini-2.5-pro)
|
||||
**Model Information:**
|
||||
- Are you using LiteLLM: Yes/No
|
||||
- Which model is being used(e.g. gemini-2.5-pro)
|
||||
|
||||
---
|
||||
|
||||
## 🟡 Optional Information
|
||||
*Providing this information greatly speeds up the resolution process.*
|
||||
|
||||
**Regression**
|
||||
Did this work in a previous version of ADK? If so, which one?
|
||||
|
||||
**Logs**
|
||||
Please attach relevant logs. Wrap them in code blocks (```) or attach a text file.
|
||||
```text
|
||||
// Paste logs here
|
||||
```
|
||||
**Screenshots / Video**
|
||||
If applicable, add screenshots or screen recordings to help explain your problem.
|
||||
|
||||
**Additional Context**
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
name: Breaking Change Detector
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'src/**'
|
||||
|
||||
jobs:
|
||||
check-api:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0 # Required for accessing the main branch history
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
- name: Install the latest version of uv
|
||||
uses: astral-sh/setup-uv@v5
|
||||
|
||||
- name: Install dependencies
|
||||
# Syncing installs the package and its dependencies (populating google.* namespace)
|
||||
# Installing 'griffe' ensures the tool is available in the environment
|
||||
run: |
|
||||
uv sync --extra test
|
||||
uv pip install griffe
|
||||
|
||||
- name: Run Breaking Change Detection
|
||||
# Uses 'uv run python' to execute in the environment with all dependencies installed
|
||||
run: |
|
||||
uv run python - <<EOF
|
||||
import sys
|
||||
import griffe
|
||||
from griffe import find_breaking_changes, load, load_git
|
||||
|
||||
def check_return_types(old_obj, new_obj):
|
||||
"""Custom check to strictly compare return type annotations."""
|
||||
errors = []
|
||||
# Check Runner.run specifically, or extend to check all methods
|
||||
try:
|
||||
old_run = old_obj.members["Runner"].members["run"]
|
||||
new_run = new_obj.members["Runner"].members["run"]
|
||||
|
||||
# Convert to string and strip to compare the annotation text
|
||||
old_ret = str(old_run.returns).strip()
|
||||
new_ret = str(new_run.returns).strip()
|
||||
|
||||
if old_ret != new_ret:
|
||||
errors.append(
|
||||
f"Breaking Change in {new_run.path}: Return type changed from '{old_ret}' to '{new_ret}'"
|
||||
)
|
||||
except KeyError:
|
||||
pass # Member missing (will be caught by standard checks)
|
||||
except AttributeError:
|
||||
pass # Member might not be a function
|
||||
return errors
|
||||
|
||||
try:
|
||||
print("Loading new API (from local source)...")
|
||||
# allow_inspection=False forces static analysis, preventing sys.modules caching issues
|
||||
new_api = load("google.adk", search_paths=["src"], allow_inspection=False)
|
||||
|
||||
print("Loading baseline API (from main branch)...")
|
||||
old_api = load_git("google.adk", ref="main", search_paths=["src"], allow_inspection=False)
|
||||
|
||||
print("Running detection...")
|
||||
|
||||
# 1. Standard Griffe Checks (Removals, Parameter changes)
|
||||
breakages = list(find_breaking_changes(old_api, new_api))
|
||||
|
||||
# 2. Custom Return Type Checks (Workaround for Griffe limitation)
|
||||
custom_errors = check_return_types(old_api, new_api)
|
||||
|
||||
found_issues = False
|
||||
|
||||
if breakages:
|
||||
found_issues = True
|
||||
print(f"::error::Found {len(breakages)} standard breaking changes!")
|
||||
for breakage in breakages:
|
||||
print(breakage.explain())
|
||||
|
||||
if custom_errors:
|
||||
found_issues = True
|
||||
print(f"::error::Found {len(custom_errors)} return type mismatches!")
|
||||
for error in custom_errors:
|
||||
print(f"- {error}")
|
||||
|
||||
if found_issues:
|
||||
sys.exit(1)
|
||||
|
||||
print("Success: No breaking changes detected.")
|
||||
|
||||
except Exception as e:
|
||||
print(f"::error::Breaking change detection failed: {e}")
|
||||
sys.exit(1)
|
||||
EOF
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -96,7 +96,7 @@ jobs:
|
||||
echo ""
|
||||
|
||||
set +e
|
||||
FILES_WITH_FORBIDDEN_IMPORT=$(grep -lE '^from.*\bcli\b.*import.*$' $CHANGED_FILES)
|
||||
FILES_WITH_FORBIDDEN_IMPORT=$(grep -lE '^from.*cli.*import.*$' $CHANGED_FILES)
|
||||
GREP_EXIT_CODE=$?
|
||||
set -e
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -23,7 +23,6 @@ on:
|
||||
|
||||
jobs:
|
||||
audit-stale-issues:
|
||||
if: github.repository == 'google/adk-python'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
|
||||
|
||||
@@ -15,11 +15,9 @@ jobs:
|
||||
# - New issues (need component labeling)
|
||||
# - Issues labeled with "planned" (need owner assignment)
|
||||
if: >-
|
||||
github.repository == 'google/adk-python' && (
|
||||
github.event_name == 'schedule' ||
|
||||
github.event.action == 'opened' ||
|
||||
github.event.label.name == 'planned'
|
||||
)
|
||||
github.event_name == 'schedule' ||
|
||||
github.event.action == 'opened' ||
|
||||
github.event.label.name == 'planned'
|
||||
permissions:
|
||||
issues: write
|
||||
contents: read
|
||||
|
||||
@@ -9,7 +9,6 @@ on:
|
||||
|
||||
jobs:
|
||||
upload-adk-docs-to-vertex-ai-search:
|
||||
if: github.repository == 'google/adk-python'
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
@@ -24,7 +24,7 @@ agentic architectures that range from simple tasks to complex workflows.
|
||||
interacts with various services like session management, artifact storage,
|
||||
and memory, and integrates with application-wide plugins. The runner
|
||||
provides different execution modes: `run_async` for asynchronous execution
|
||||
in production, `run_live` for bidirectional streaming interaction, and
|
||||
in production, `run_live` for bi-directional streaming interaction, and
|
||||
`run` for synchronous execution suitable for local testing and debugging. At
|
||||
the end of each invocation, it can perform event compaction to manage
|
||||
session history size.
|
||||
@@ -316,7 +316,7 @@ navigation and refactoring.
|
||||
immediately after the license header, before any other imports.
|
||||
|
||||
```python
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
+2
-2
@@ -531,7 +531,7 @@
|
||||
* Set `max_output_tokens` for the agent builder ([2e2d61b](https://github.com/google/adk-python/commit/2e2d61b6fecb90cd474d6f51255678ff74b67a9b))
|
||||
* Set default response modality to AUDIO in run_session ([68402bd](https://github.com/google/adk-python/commit/68402bda49083f2d56f8e8488fe13aa58b3bc18c))
|
||||
* Update remote_a2a_agent to better handle streaming events and avoid duplicate responses ([8e5f361](https://github.com/google/adk-python/commit/8e5f36126498f751171bb2639c7f5a9e7dca2558))
|
||||
* Update the load_artifacts tool so that the model can reliably call it for follow-up questions about the same artifact ([238472d](https://github.com/google/adk-python/commit/238472d083b5aa67551bde733fc47826ff062679))
|
||||
* Update the load_artifacts tool so that the model can reliably call it for follow up questions about the same artifact ([238472d](https://github.com/google/adk-python/commit/238472d083b5aa67551bde733fc47826ff062679))
|
||||
* Fix VertexAiSessionService base_url override to preserve initialized http_options ([8110e41](https://github.com/google/adk-python/commit/8110e41b36cceddb8b92ba17cffaacf701706b36), [c51ea0b](https://github.com/google/adk-python/commit/c51ea0b52e63de8e43d3dccb24f9d20987784aa5))
|
||||
* Handle `App` instances returned by `agent_loader.load_agent` ([847df16](https://github.com/google/adk-python/commit/847df1638cbf1686aa43e8e094121d4e23e40245))
|
||||
|
||||
@@ -698,7 +698,7 @@
|
||||
* AgentTool returns last content, instead of the content in the last event [bcf0dda](https://github.com/google/adk-python/commit/bcf0dda8bcc221974098f3077007c9e84c63021a)
|
||||
* Fix adk deploy docker file permission [ad81aa5](https://github.com/google/adk-python/commit/ad81aa54de1f38df580915b7f47834ea8e5f1004)
|
||||
* Updating BaseAgent.clone() and LlmAgent.clone() to properly clone fields that are lists [29bb75f](https://github.com/google/adk-python/commit/29bb75f975fe0c9c9d9a7e534a9c20158e1cbe1e)
|
||||
* Make tool description for bigquery `execute_sql` for various write modes self-contained [167182b](https://github.com/google/adk-python/commit/167182be0163117f814c70f453d5b2e19bf474df)
|
||||
* Make tool description for bigquery `execute_sql` for various write modes self contained [167182b](https://github.com/google/adk-python/commit/167182be0163117f814c70f453d5b2e19bf474df)
|
||||
* Set invocation_id and branch for event generated when both output_schema and tools are used [3f3aa7b](https://github.com/google/adk-python/commit/3f3aa7b32d63cae5750d71bc586c088427c979ea)
|
||||
* Rework parallel_agent.py to always aclose async generators [826f554](https://github.com/google/adk-python/commit/826f5547890dc02e707be33a3d6a58b527dac223)
|
||||
* Add table metadata info into Spanner tool `get_table_schema` and fix the key usage info [81a53b5](https://github.com/google/adk-python/commit/81a53b53d6336011187a50ae8f1544de9b2764a8)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#!/bin/bash
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright 2026 Google LLC
|
||||
# Copyright 2025 Google LLC
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user