googleapis / googleapis/python-aiplatform

AgentEngineConfig.agent_framework Literal rejects "a2a" — out of sync with _SUPPORTED_AGENT_FRAMEWORKS and the GA A2A template

Open Beginner friendly
#7,097 1 comment 0 reactions 0 assignees View on GitHub
api: vertex-ai
Dominant language
Python
Stars
905
Forks
465
Avg merge
1d 13h
Merged PRs (30d)
44

Description

## Environment

- `google-cloud-aiplatform` 1.159.0 → 1.165.1 (still present on `main`)
- GenAI client path: `vertexai.Client().agent_engines`

## Bug

A2A on Agent Engine is a supported framework: `_SUPPORTED_AGENT_FRAMEWORKS` includes `"a2a"`, the `A2aAgent` template sets `agent_framework = "a2a"` (since 1.147.0), the A2A framework template is GA (CHANGELOG 1.150.0), and the backend API accepts `spec.agent_framework = "a2a"`.

But the config type was never updated to match:

```python
# vertexai/_genai/types/common.py
agent_framework: Optional[
Literal["google-adk", "langchain", "langgraph", "ag2", "llama-index", "custom"]
]
```

`"a2a"` is missing from the `Literal` (in `AgentEngineConfig`, its Dict twin, and the update-config variants), so passing it raises a Pydantic validation error, while the same package accepts it internally:

```python
# vertexai/_genai/_agent_engines_utils.py (~line 167)
_SUPPORTED_AGENT_FRAMEWORKS = frozenset(
["google-adk", "langchain", "langgraph", "ag2", "llama-index", "custom", "a2a"]
)
```

## Steps to reproduce

```python
import vertexai
client = vertexai.Client(project="...", location="us-central1")
client.agent_engines.create(
agent=my_agent,
config={"staging_bucket": "gs://...", "agent_framework": "a2a"},
)
# pydantic ValidationError: Input should be 'google-adk', 'langchain',
# 'langgraph', 'ag2', 'llama-index' or 'custom'
```

## Expected behavior

`agent_framework="a2a"` accepted in the config, consistent with `_SUPPORTED_AGENT_FRAMEWORKS`, the `A2aAgent` template, and the backend API.

## Workaround

Set the fields on the agent object instead of the config: use the `A2aAgent` template, or set `my_agent.agent_framework = "a2a"` before `create()` — `_get_agent_framework(agent)` reads the attribute and bypasses the config `Literal`.

## Related

#6267 (classic `ReasoningEngine.create` path missing `agent_framework` support) — this issue is about the GenAI client config type being out of sync.

Contributor guide

Open the contributing guide

Research direction

Start with vertexai/_genai/types/common.py and inspect the AgentEngineConfig, Dict twin, and update-config variants named in the report, comparing them with _SUPPORTED_AGENT_FRAMEWORKS in vertexai/_genai/_agent_engines_utils.py. Reproduce the shown agent_engines.create configuration, then run the relevant existing validation tests; done means agent_framework="a2a" is accepted consistently without weakening validation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
api
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.