mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
feat(web): add list-apps-detailed endpoint
Merge https://github.com/google/adk-python/pull/3430 **Please ensure you have read the [contribution guide](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) before creating a pull request.** ### Link to Issue or Description of Change **1. Link to an existing issue (if applicable):** - Closes: #3429 **2. Or, if no issue exists, describe the change:** _If applicable, please follow the issue templates to provide as much detail as possible._ **Problem:** The existing `/list-apps` endpoint only returns the name of the folder that each agent is in **Solution:** This adds a new endpoint `/list-apps-detailed` which will load each agent using the existing `AgentLoader.load_agent` method, and then return the folder name, display name (with underscores replaced with spaces for a more readable version), description, and the agent type. This does introduce overhead if you had multiple agents since they all need to be loaded, but by maintaining the existing `/list-apps` endpoint, users can choose which one to hit if they don't want to load all agents. Since the existing `load_agents` method will cache results, there's only a penalty on the first hit. ### Testing Plan Created a unit test for this, similar to the `/list-apps`. Also tested this with my own ADK instance to verify it loaded correctly. ``` curl --location "localhost:8000/list-apps-detailed" ``` ```json { "apps": [ { "name": "agent_1", "displayName": "Agent 1", "description": "A test description for a test agent", "agentType": "package" }, { "name": "agent_2", "displayName": "Agent 2", "description": "A test description for a test agent ", "agentType": "package" }, { "name": "agent_3", "displayName": "Agent 3", "description": "A test description for a test agent", "agentType": "package" } ] } ``` **Unit Tests:** - [X] I have added or updated unit tests for my change. - [X] All unit tests pass locally. 3054 passed, 2383 warnings in 46.96s ### Checklist - [X] I have read the [CONTRIBUTING.md](https://github.com/google/adk-python/blob/main/CONTRIBUTING.md) document. - [X] I have performed a self-review of my own code. - [X] I have commented my code, particularly in hard-to-understand areas. - [X] I have added tests that prove my fix is effective or that my feature works. - [X] New and existing unit tests pass locally with my changes. - [X] I have manually tested my changes end-to-end. - [X] Any dependent changes have been merged and published in downstream modules. COPYBARA_INTEGRATE_REVIEW=https://github.com/google/adk-python/pull/3430 from dylan-apex:more-detailed-list-apps e6864fd61a673da5fd2fb28d2d7d72cb90f5af0a PiperOrigin-RevId: 834907771
This commit is contained in:
@@ -190,6 +190,14 @@ def mock_agent_loader():
|
||||
def list_agents(self):
|
||||
return ["test_app"]
|
||||
|
||||
def list_agents_detailed(self):
|
||||
return [{
|
||||
"name": "test_app",
|
||||
"root_agent_name": "test_agent",
|
||||
"description": "A test agent for unit testing",
|
||||
"language": "python",
|
||||
}]
|
||||
|
||||
return MockAgentLoader(".")
|
||||
|
||||
|
||||
@@ -548,6 +556,26 @@ def test_list_apps(test_app):
|
||||
logger.info(f"Listed apps: {data}")
|
||||
|
||||
|
||||
def test_list_apps_detailed(test_app):
|
||||
"""Test listing available applications with detailed metadata."""
|
||||
response = test_app.get("/list-apps?detailed=true")
|
||||
|
||||
assert response.status_code == 200
|
||||
data = response.json()
|
||||
assert isinstance(data, dict)
|
||||
assert "apps" in data
|
||||
assert isinstance(data["apps"], list)
|
||||
|
||||
for app in data["apps"]:
|
||||
assert "name" in app
|
||||
assert "rootAgentName" in app
|
||||
assert "description" in app
|
||||
assert "language" in app
|
||||
assert app["language"] in ["yaml", "python"]
|
||||
|
||||
logger.info(f"Listed apps: {data}")
|
||||
|
||||
|
||||
def test_create_session_with_id(test_app, test_session_info):
|
||||
"""Test creating a session with a specific ID."""
|
||||
new_session_id = "new_session_id"
|
||||
|
||||
Reference in New Issue
Block a user