You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(spec)!: Move extendedAgentCard field to AgentCapabilities (#1307)
Relocates `supports_extended_agent_card` from AgentCard to
AgentCapabilities for architectural consistency. All optional features
that enable specific operations now reside in the capabilities object.
Rationale:
- Consistent placement: streaming, push_notifications, and
state_transition_history are all in AgentCapabilities
- Improved discoverability: developers naturally check capabilities for
optional features
- Semantic correctness: extended agent card support is a capability
Changes:
- Proto: Removed field 13 from AgentCard, added field 5 to
AgentCapabilities
- Field renamed: supports_extended_agent_card → extended_agent_card
- Updated all references: AgentCard.supportsExtendedAgentCard →
AgentCard.capabilities.extendedAgentCard
- Updated JSON examples to reflect new structure
- Added migration guidance in Appendix A.2.2 of specification
Breaking change: Clients and agents must update capability checking
logic. See specification Appendix A.2.2 for migration steps.
Fixes#1229
---------
Co-authored-by: Luca Muscariello <[email protected]>
Co-authored-by: Darrel <[email protected]>
Copy file name to clipboardExpand all lines: docs/specification.md
+75-8Lines changed: 75 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -417,7 +417,7 @@ The operation MUST permanently remove the specified push notification configurat
417
417
418
418
#### 3.1.11. Get Extended Agent Card
419
419
420
-
Retrieves a potentially more detailed version of the Agent Card after the client has authenticated. This endpoint is available only if `AgentCard.supportsExtendedAgentCard` is `true`.
420
+
Retrieves a potentially more detailed version of the Agent Card after the client has authenticated. This endpoint is available only if `AgentCard.capabilities.extendedAgentCard` is `true`.
421
421
422
422
**Inputs:**
423
423
@@ -437,7 +437,7 @@ Retrieves a potentially more detailed version of the Agent Card after the client
437
437
-**Authentication**: The client MUST authenticate the request using one of the schemes declared in the public `AgentCard.securitySchemes` and `AgentCard.security` fields.
438
438
-**Extended Information**: The operation MAY return different details based on client authentication level, including additional skills, capabilities, or configuration not available in the public Agent Card.
439
439
-**Card Replacement**: Clients retrieving this extended card SHOULD replace their cached public Agent Card with the content received from this endpoint for the duration of their authenticated session or until the card's version changes.
440
-
-**Availability**: This operation is only available if the public Agent Card declares `supportsExtendedAgentCard: true`.
440
+
-**Availability**: This operation is only available if the public Agent Card declares `capabilities.extendedAgentCard: true`.
441
441
442
442
For detailed security guidance on extended agent cards, see [Section 13.3 Extended Agent Card Access Control](#133-extended-agent-card-access-control).
443
443
@@ -586,7 +586,7 @@ Agents declare optional capabilities in their [`AgentCard`](#441-agentcard). Whe
586
586
587
587
-**Push Notifications**: If `AgentCard.capabilities.pushNotifications` is `false` or not present, operations related to push notification configuration (Set, Get, List, Delete) **MUST** return [`PushNotificationNotSupportedError`](#332-error-handling).
588
588
-**Streaming**: If `AgentCard.capabilities.streaming` is `false` or not present, attempts to use `SendStreamingMessage` or `SubscribeToTask` operations **MUST** return [`UnsupportedOperationError`](#332-error-handling).
589
-
-**Extended Agent Card**: If `AgentCard.supportsExtendedAgentCard` is `false` or not present, attempts to call the Get Extended Agent Card operation **MUST** return [`UnsupportedOperationError`](#332-error-handling). If the agent declares support but has not configured an extended card, it **MUST** return [`ExtendedAgentCardNotConfiguredError`](#332-error-handling).
589
+
-**Extended Agent Card**: If `AgentCard.capabilities.extendedAgentCard` is `false` or not present, attempts to call the Get Extended Agent Card operation **MUST** return [`UnsupportedOperationError`](#332-error-handling). If the agent declares support but has not configured an extended card, it **MUST** return [`ExtendedAgentCardNotConfiguredError`](#332-error-handling).
590
590
-**Extensions**: When a client requests use of an extension marked as `required: true` in the Agent Card but the client does not declare support for it, the agent **MUST** return [`ExtensionSupportRequiredError`](#332-error-handling).
591
591
592
592
Clients **SHOULD** validate capability support by examining the Agent Card before attempting operations that require optional capabilities.
@@ -3114,8 +3116,8 @@ The extended Agent Card feature allows agents to provide additional capabilities
3114
3116
3115
3117
**Availability Declaration:**
3116
3118
3117
-
- Agents declare extended card support via `AgentCard.supportsExtendedAgentCard`
3118
-
- When `supportsExtendedAgentCard` is `false` or not present, the operation **MUST** return [`UnsupportedOperationError`](#332-error-handling)
3119
+
- Agents declare extended card support via `AgentCard.capabilities.extendedAgentCard`
3120
+
- When `capabilities.extendedAgentCard` is `false` or not present, the operation **MUST** return [`UnsupportedOperationError`](#332-error-handling)
3119
3121
- When support is declared but no extended card is configured, the operation **MUST** return [`ExtendedAgentCardNotConfiguredError`](#332-error-handling)
3120
3122
3121
3123
See also: [Section 3.1.11 Get Extended Agent Card](#3111-get-extended-agent-card) and [Section 3.3.4 Capability Validation](#334-capability-validation).
@@ -3480,6 +3482,71 @@ This change aligns with modern API design practices and Protocol Buffers' `oneof
3480
3482
- Eliminates the need for representing inheritance structures in schema languages
3481
3483
- Improves type safety in strongly-typed languages
3482
3484
3485
+
#### A.2.2 Breaking Change: Extended Agent Card Field Relocated
3486
+
3487
+
**Version 1.0 relocates the extended agent card capability** from a top-level field to the capabilities object for architectural consistency.
All optional features enabling specific operations (`streaming`, `pushNotifications`, `stateTransitionHistory`) reside in `AgentCapabilities`. Moving `extendedAgentCard` achieves:
3545
+
3546
+
- Architectural consistency
3547
+
- Improved discoverability
3548
+
- Semantic correctness (it is a capability)
3549
+
3483
3550
### A.3 Future Automation
3484
3551
3485
3552
Once the proto→schema generation pipeline lands, this appendix will be partially auto-generated (legacy mapping table sourced from a maintained manifest). Until then, edits MUST be manual and reviewed in PRs affecting `a2a.proto`.
0 commit comments