a2a 0.1.0.pre → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.agent-docs/ROADMAP.md +423 -0
- data/.agent-docs/index.md +124 -0
- data/.agent-docs/llms.txt +318 -0
- data/.agent-docs/specification/json.json +2575 -0
- data/.agent-docs/specification.md +1924 -0
- data/.agent-docs/topics/a2a-and-mcp.md +132 -0
- data/.agent-docs/topics/agent-discovery.md +96 -0
- data/.agent-docs/topics/enterprise-ready.md +139 -0
- data/.agent-docs/topics/extensions.md +260 -0
- data/.agent-docs/topics/key-concepts.md +99 -0
- data/.agent-docs/topics/life-of-a-task.md +255 -0
- data/.agent-docs/topics/streaming-and-async.md +111 -0
- data/.agent-docs/topics/what-is-a2a.md +218 -0
- data/.agent-docs/tutorials/index.md +31 -0
- data/.agent-docs/tutorials/python/1-introduction.md +32 -0
- data/.agent-docs/tutorials/python/2-setup.md +55 -0
- data/.agent-docs/tutorials/python/3-agent-skills-and-card.md +48 -0
- data/.agent-docs/tutorials/python/4-agent-executor.md +57 -0
- data/.agent-docs/tutorials/python/5-start-server.md +55 -0
- data/.agent-docs/tutorials/python/6-interact-with-server.md +95 -0
- data/.agent-docs/tutorials/python/7-streaming-and-multiturn.md +97 -0
- data/.agent-docs/tutorials/python/8-next-steps.md +40 -0
- data/.agent-docs/types.ts +1544 -0
- data/.agent-docs/types_mapping.md +196 -0
- data/.claude/commands/gemfile/update.md +52 -0
- data/.claude/settings.local.json +23 -0
- data/.rubocop.yml +25 -4
- data/.tool-versions +1 -1
- data/CHANGELOG.md +86 -2
- data/CLAUDE.md +98 -0
- data/Guardfile +1 -1
- data/README.md +55 -4
- data/Rakefile +1 -3
- data/WARP.md +115 -0
- data/lib/a2a/extensions/additional_properties.rb +121 -0
- data/lib/a2a/extensions/case_transformation.rb +46 -0
- data/lib/a2a/extensions/json_deserialization.rb +51 -0
- data/lib/a2a/types/agent_capabilities.rb +18 -0
- data/lib/a2a/types/agent_card.rb +71 -0
- data/lib/a2a/types/agent_card_signature.rb +17 -0
- data/lib/a2a/types/agent_extension.rb +19 -0
- data/lib/a2a/types/agent_interface.rb +13 -0
- data/lib/a2a/types/agent_provider.rb +12 -0
- data/lib/a2a/types/agent_skill.rb +34 -0
- data/lib/a2a/types/api_key_security_scheme.rb +15 -0
- data/lib/a2a/types/artifact.rb +24 -0
- data/lib/a2a/types/authenticated_extended_card_not_configured_error.rb +43 -0
- data/lib/a2a/types/authorization_code_oauth_flow.rb +22 -0
- data/lib/a2a/types/cancel_task_request.rb +18 -0
- data/lib/a2a/types/cancel_task_response.rb +12 -0
- data/lib/a2a/types/client_credentials_oauth_flow.rb +16 -0
- data/lib/a2a/types/content_type_not_supported_error.rb +42 -0
- data/lib/a2a/types/data_part.rb +12 -0
- data/lib/a2a/types/delete_task_push_notification_config_params.rb +9 -0
- data/lib/a2a/types/delete_task_push_notification_config_request.rb +18 -0
- data/lib/a2a/types/delete_task_push_notification_config_response.rb +13 -0
- data/lib/a2a/types/error.rb +19 -0
- data/lib/a2a/types/error_codes.rb +32 -0
- data/lib/a2a/types/file_base.rb +12 -0
- data/lib/a2a/types/file_part.rb +13 -0
- data/lib/a2a/types/file_with_bytes.rb +9 -0
- data/lib/a2a/types/file_with_uri.rb +9 -0
- data/lib/a2a/types/get_authenticated_extended_card_request.rb +15 -0
- data/lib/a2a/types/get_authenticated_extended_card_response.rb +13 -0
- data/lib/a2a/types/get_task_push_notification_config_params.rb +9 -0
- data/lib/a2a/types/get_task_push_notification_config_request.rb +21 -0
- data/lib/a2a/types/get_task_push_notification_request.rb +18 -0
- data/lib/a2a/types/get_task_push_notification_response.rb +12 -0
- data/lib/a2a/types/get_task_request.rb +18 -0
- data/lib/a2a/types/get_task_response.rb +12 -0
- data/lib/a2a/types/http_auth_security_scheme.rb +18 -0
- data/lib/a2a/types/implicit_oauth_flow.rb +16 -0
- data/lib/a2a/types/invalid_agent_response_error.rb +41 -0
- data/lib/a2a/types/list_task_push_notification_config_params.rb +8 -0
- data/lib/a2a/types/list_task_push_notification_config_request.rb +18 -0
- data/lib/a2a/types/list_task_push_notification_config_response.rb +13 -0
- data/lib/a2a/types/message.rb +35 -0
- data/lib/a2a/types/message_send_configuration.rb +20 -0
- data/lib/a2a/types/message_send_params.rb +16 -0
- data/lib/a2a/types/mutual_tls_security_scheme.rb +9 -0
- data/lib/a2a/types/oauth2_security_scheme.rb +16 -0
- data/lib/a2a/types/oauth_flows.rb +20 -0
- data/lib/a2a/types/openid_connect_security_scheme.rb +12 -0
- data/lib/a2a/types/part.rb +7 -0
- data/lib/a2a/types/part_base.rb +9 -0
- data/lib/a2a/types/password_oauth_flow.rb +16 -0
- data/lib/a2a/types/protocol_struct.rb +12 -0
- data/lib/a2a/types/push_notification_authentication_info.rb +12 -0
- data/lib/a2a/types/push_notification_config.rb +20 -0
- data/lib/a2a/types/push_notification_not_supported_error.rb +42 -0
- data/lib/a2a/types/request.rb +15 -0
- data/lib/a2a/types/security_scheme.rb +11 -0
- data/lib/a2a/types/security_scheme_base.rb +9 -0
- data/lib/a2a/types/send_message_request.rb +18 -0
- data/lib/a2a/types/send_message_response.rb +13 -0
- data/lib/a2a/types/send_streaming_message_request.rb +18 -0
- data/lib/a2a/types/send_streaming_message_response.rb +15 -0
- data/lib/a2a/types/set_task_push_notification_config_request.rb +18 -0
- data/lib/a2a/types/set_task_push_notification_request.rb +18 -0
- data/lib/a2a/types/set_task_push_notification_response.rb +12 -0
- data/lib/a2a/types/task.rb +29 -0
- data/lib/a2a/types/task_artifact_update_event.rb +29 -0
- data/lib/a2a/types/task_id_params.rb +12 -0
- data/lib/a2a/types/task_not_cancelable_error.rb +42 -0
- data/lib/a2a/types/task_not_found_error.rb +42 -0
- data/lib/a2a/types/task_push_notification_config.rb +12 -0
- data/lib/a2a/types/task_query_params.rb +9 -0
- data/lib/a2a/types/task_resubscription_request.rb +18 -0
- data/lib/a2a/types/task_state.rb +7 -0
- data/lib/a2a/types/task_status.rb +15 -0
- data/lib/a2a/types/task_status_update_event.rb +25 -0
- data/lib/a2a/types/text_part.rb +12 -0
- data/lib/a2a/types/transport_protocol.rb +6 -0
- data/lib/a2a/types/unsupported_operation_error.rb +42 -0
- data/lib/a2a/types.rb +25 -0
- data/lib/a2a/version.rb +1 -1
- data/lib/a2a.rb +30 -1
- metadata +128 -299
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dcc04a0563aab2d967c351284516fac3f491435c2fd6cf3a0b5854e538132ed5
|
4
|
+
data.tar.gz: c7f857d4d8fd6c6efa0ef9e1f00aae5b5ddbde377c5b386d4acfb5b7601c8ce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c5f2bcc5af4a9b8fbcd61fc1f744a11103b94714dfed724a0df6547ebd6aa0731919847c6faa02f620d25c9d91b7fc132810ea4c7df45a13ee1a952ad5b22d3
|
7
|
+
data.tar.gz: 212b1ce5ec14125891c4da59a730bd2ba3837e398485944271ee811a48bbfaba4a133edfd8e248fed91ff1121188fa5522830e27f82b500324f68fd0ef70e87e
|
@@ -0,0 +1,423 @@
|
|
1
|
+
# Agent2Agent (A2A) Protocol - Feature Roadmap
|
2
|
+
|
3
|
+
## 1. Core Transport & Communication
|
4
|
+
|
5
|
+
### 1.1 Transport Protocols
|
6
|
+
- [ ] JSON-RPC 2.0 over HTTP(S) transport support
|
7
|
+
- [ ] gRPC transport support (Protocol Buffers v3)
|
8
|
+
- [ ] HTTP+JSON/REST transport support
|
9
|
+
- [ ] Multi-transport capability with functional equivalence
|
10
|
+
- [ ] Transport-specific optimizations and extensions
|
11
|
+
- [ ] Transport selection and fallback logic
|
12
|
+
- [ ] Method mapping across transports (JSON-RPC, gRPC, REST)
|
13
|
+
|
14
|
+
### 1.2 Streaming Capabilities
|
15
|
+
- [ ] Server-Sent Events (SSE) streaming for JSON-RPC
|
16
|
+
- [ ] gRPC server streaming RPCs
|
17
|
+
- [ ] HTTP+JSON/REST streaming with SSE
|
18
|
+
- [ ] Real-time task status updates via streaming
|
19
|
+
- [ ] Incremental artifact delivery via streaming
|
20
|
+
- [ ] Stream reconnection and resubscription
|
21
|
+
- [ ] Stream termination signaling
|
22
|
+
|
23
|
+
### 1.3 Message Format
|
24
|
+
- [ ] JSON-RPC 2.0 request/response structure
|
25
|
+
- [ ] Protocol Buffers message serialization
|
26
|
+
- [ ] RESTful JSON request/response format
|
27
|
+
- [ ] Standard JSON-RPC error responses
|
28
|
+
- [ ] Transport-agnostic data structures
|
29
|
+
|
30
|
+
## 2. Agent Discovery & Metadata
|
31
|
+
|
32
|
+
### 2.1 Agent Card
|
33
|
+
- [ ] Agent Card JSON document structure
|
34
|
+
- [ ] Well-known URI location (/.well-known/agent-card.json)
|
35
|
+
- [ ] Agent identity and description
|
36
|
+
- [ ] Service endpoint URL declaration
|
37
|
+
- [ ] Protocol version specification
|
38
|
+
- [ ] Provider information
|
39
|
+
- [ ] Documentation URL
|
40
|
+
- [ ] Agent icon URL
|
41
|
+
- [ ] Agent Card signatures (JWS)
|
42
|
+
|
43
|
+
### 2.2 Capabilities Declaration
|
44
|
+
- [ ] Streaming capability flag
|
45
|
+
- [ ] Push notifications capability flag
|
46
|
+
- [ ] Extension declarations
|
47
|
+
- [ ] Transport protocol declarations (preferred + additional)
|
48
|
+
- [ ] Multi-interface support declaration
|
49
|
+
|
50
|
+
### 2.3 Skills Definition
|
51
|
+
- [ ] Skill name and description
|
52
|
+
- [ ] Skill tags for categorization
|
53
|
+
- [ ] Example queries for skills
|
54
|
+
- [ ] Input modalities per skill
|
55
|
+
- [ ] Output modalities per skill
|
56
|
+
- [ ] Per-skill security requirements
|
57
|
+
|
58
|
+
### 2.4 Extended Agent Cards
|
59
|
+
- [ ] Authenticated extended Agent Card retrieval
|
60
|
+
- [ ] `supportsAuthenticatedExtendedCard` flag
|
61
|
+
- [ ] `agent/getAuthenticatedExtendedCard` RPC method
|
62
|
+
|
63
|
+
## 3. Security & Authentication
|
64
|
+
|
65
|
+
### 3.1 Transport Security
|
66
|
+
- [ ] HTTPS/TLS requirement enforcement
|
67
|
+
- [ ] TLS 1.3+ support with strong cipher suites
|
68
|
+
- [ ] Server identity verification via TLS certificates
|
69
|
+
- [ ] Client webhook server TLS verification
|
70
|
+
- [ ] mTLS (Mutual TLS) security scheme
|
71
|
+
|
72
|
+
### 3.2 Authentication Schemes
|
73
|
+
- [ ] API Key authentication (header, query, cookie)
|
74
|
+
- [ ] HTTP authentication schemes (Bearer, Basic, etc.)
|
75
|
+
- [ ] OAuth 2.0 authentication
|
76
|
+
- [ ] Authorization Code flow
|
77
|
+
- [ ] Client Credentials flow
|
78
|
+
- [ ] Implicit flow
|
79
|
+
- [ ] Password flow
|
80
|
+
- [ ] OAuth 2.0 metadata URL support
|
81
|
+
- [ ] OpenID Connect authentication
|
82
|
+
- [ ] JWT bearer token format
|
83
|
+
- [ ] Security scheme declaration in Agent Card
|
84
|
+
- [ ] Multiple security requirement combinations (OR of ANDs)
|
85
|
+
|
86
|
+
### 3.3 Authorization
|
87
|
+
- [ ] Server-side authorization implementation
|
88
|
+
- [ ] Principle of least privilege
|
89
|
+
- [ ] Granular authorization (skills, actions, data)
|
90
|
+
- [ ] HTTP 401 Unauthorized responses
|
91
|
+
- [ ] HTTP 403 Forbidden responses
|
92
|
+
- [ ] WWW-Authenticate header support
|
93
|
+
|
94
|
+
### 3.4 In-Task Authentication
|
95
|
+
- [ ] `auth-required` task state
|
96
|
+
- [ ] Secondary credential requests during task execution
|
97
|
+
- [ ] User authentication prompts in task workflow
|
98
|
+
|
99
|
+
## 4. Core RPC Methods
|
100
|
+
|
101
|
+
### 4.1 Message Operations
|
102
|
+
- [ ] `message/send` - Send message and initiate/continue task
|
103
|
+
- [ ] `message/stream` - Send message with streaming updates
|
104
|
+
- [ ] Blocking vs non-blocking message send configuration
|
105
|
+
- [ ] Accepted output modes configuration
|
106
|
+
- [ ] Task restart prevention for terminal states
|
107
|
+
|
108
|
+
### 4.2 Task Operations
|
109
|
+
- [ ] `tasks/get` - Retrieve task status and results
|
110
|
+
- [ ] `tasks/list` - List tasks (gRPC/REST only)
|
111
|
+
- [ ] `tasks/cancel` - Request task cancellation
|
112
|
+
- [ ] `tasks/resubscribe` - Resume streaming for existing tasks
|
113
|
+
- [ ] Task ID-based operations
|
114
|
+
- [ ] History length configuration for task retrieval
|
115
|
+
|
116
|
+
### 4.3 Push Notification Configuration
|
117
|
+
- [ ] `tasks/pushNotificationConfig/set` - Configure push notifications
|
118
|
+
- [ ] `tasks/pushNotificationConfig/get` - Retrieve configuration
|
119
|
+
- [ ] `tasks/pushNotificationConfig/list` - List configurations
|
120
|
+
- [ ] `tasks/pushNotificationConfig/delete` - Delete configuration
|
121
|
+
- [ ] Webhook URL configuration
|
122
|
+
- [ ] Push notification authentication setup
|
123
|
+
- [ ] Push notification token management
|
124
|
+
|
125
|
+
## 5. Data Structures & Content Types
|
126
|
+
|
127
|
+
### 5.1 Messages
|
128
|
+
- [ ] Message role (user/agent)
|
129
|
+
- [ ] Message parts array
|
130
|
+
- [ ] Message ID generation
|
131
|
+
- [ ] Task ID association
|
132
|
+
- [ ] Context ID association
|
133
|
+
- [ ] Reference task IDs
|
134
|
+
- [ ] Message metadata
|
135
|
+
- [ ] Extension URI references
|
136
|
+
|
137
|
+
### 5.2 Parts (Content Types)
|
138
|
+
- [ ] TextPart - Plain text content
|
139
|
+
- [ ] FilePart - File content
|
140
|
+
- [ ] Base64-encoded inline files (bytes)
|
141
|
+
- [ ] URI-referenced files
|
142
|
+
- [ ] File name and MIME type metadata
|
143
|
+
- [ ] DataPart - Structured JSON data
|
144
|
+
- [ ] Part metadata support
|
145
|
+
- [ ] Inline display flag for parts
|
146
|
+
|
147
|
+
### 5.3 Artifacts
|
148
|
+
- [ ] Artifact ID generation
|
149
|
+
- [ ] Artifact name and description
|
150
|
+
- [ ] Artifact parts array
|
151
|
+
- [ ] Artifact metadata
|
152
|
+
- [ ] Extension URI references for artifacts
|
153
|
+
- [ ] Incremental artifact updates
|
154
|
+
- [ ] Append vs replace artifact semantics
|
155
|
+
|
156
|
+
### 5.4 Task Structure
|
157
|
+
- [ ] Task ID (server-generated UUID)
|
158
|
+
- [ ] Context ID (server-generated UUID)
|
159
|
+
- [ ] Task status object
|
160
|
+
- [ ] Conversation history array
|
161
|
+
- [ ] Artifacts collection
|
162
|
+
- [ ] Task metadata
|
163
|
+
- [ ] Task lifecycle management
|
164
|
+
|
165
|
+
## 6. Task Lifecycle & States
|
166
|
+
|
167
|
+
### 6.1 Task States
|
168
|
+
- [ ] `submitted` - Task received, awaiting execution
|
169
|
+
- [ ] `working` - Agent actively processing task
|
170
|
+
- [ ] `input-required` - Paused, waiting for user input
|
171
|
+
- [ ] `completed` - Successfully completed (terminal)
|
172
|
+
- [ ] `failed` - Failed due to error (terminal)
|
173
|
+
- [ ] `canceled` - Canceled by user (terminal)
|
174
|
+
- [ ] `rejected` - Rejected by agent (terminal)
|
175
|
+
- [ ] `auth-required` - Requires authentication
|
176
|
+
- [ ] `unknown` - Indeterminate state (terminal)
|
177
|
+
|
178
|
+
### 6.2 Status Management
|
179
|
+
- [ ] Task state tracking
|
180
|
+
- [ ] Status message (human-readable)
|
181
|
+
- [ ] Status timestamp (ISO 8601)
|
182
|
+
- [ ] State transition logic
|
183
|
+
- [ ] Terminal state handling
|
184
|
+
|
185
|
+
### 6.3 Context Management
|
186
|
+
- [ ] Context ID generation
|
187
|
+
- [ ] Context-based task grouping
|
188
|
+
- [ ] Related task associations
|
189
|
+
- [ ] Context persistence across interactions
|
190
|
+
|
191
|
+
## 7. Streaming & Events
|
192
|
+
|
193
|
+
### 7.1 Status Update Events
|
194
|
+
- [ ] TaskStatusUpdateEvent structure
|
195
|
+
- [ ] Task ID in status updates
|
196
|
+
- [ ] Context ID in status updates
|
197
|
+
- [ ] New status object
|
198
|
+
- [ ] Final event flag
|
199
|
+
- [ ] Status update metadata
|
200
|
+
|
201
|
+
### 7.2 Artifact Update Events
|
202
|
+
- [ ] TaskArtifactUpdateEvent structure
|
203
|
+
- [ ] Task ID in artifact updates
|
204
|
+
- [ ] Context ID in artifact updates
|
205
|
+
- [ ] Artifact payload
|
206
|
+
- [ ] Append flag for incremental updates
|
207
|
+
- [ ] Last chunk flag
|
208
|
+
- [ ] Final event flag
|
209
|
+
|
210
|
+
### 7.3 Message Events
|
211
|
+
- [ ] Message delivery in streams
|
212
|
+
- [ ] Message-based streaming responses
|
213
|
+
- [ ] Final message flag
|
214
|
+
|
215
|
+
## 8. Push Notifications
|
216
|
+
|
217
|
+
### 8.1 Configuration
|
218
|
+
- [ ] Webhook URL specification
|
219
|
+
- [ ] Push notification token
|
220
|
+
- [ ] Authentication information structure
|
221
|
+
- [ ] Authentication schemes array
|
222
|
+
- [ ] Credentials/configuration info
|
223
|
+
- [ ] Per-task notification configuration
|
224
|
+
|
225
|
+
### 8.2 Security
|
226
|
+
- [ ] Webhook URL validation (SSRF prevention)
|
227
|
+
- [ ] Domain allowlisting
|
228
|
+
- [ ] Ownership verification
|
229
|
+
- [ ] Server-to-webhook authentication
|
230
|
+
- [ ] JWT-based authentication
|
231
|
+
- [ ] JWKS endpoint support
|
232
|
+
- [ ] Timestamp validation
|
233
|
+
- [ ] Nonce/unique ID for replay prevention
|
234
|
+
- [ ] Signature verification
|
235
|
+
|
236
|
+
### 8.3 Delivery
|
237
|
+
- [ ] Asynchronous notification delivery
|
238
|
+
- [ ] Notification payload structure
|
239
|
+
- [ ] Task ID in notifications
|
240
|
+
- [ ] State change notifications
|
241
|
+
- [ ] Long-running task support
|
242
|
+
- [ ] Disconnected client support
|
243
|
+
|
244
|
+
## 9. Error Handling
|
245
|
+
|
246
|
+
### 9.1 JSON-RPC Standard Errors
|
247
|
+
- [ ] `-32700` Parse Error - Invalid JSON
|
248
|
+
- [ ] `-32600` Invalid Request Error
|
249
|
+
- [ ] `-32601` Method Not Found Error
|
250
|
+
- [ ] `-32602` Invalid Params Error
|
251
|
+
- [ ] `-32603` Internal Error
|
252
|
+
|
253
|
+
### 9.2 A2A-Specific Errors
|
254
|
+
- [ ] `-32001` Task Not Found Error
|
255
|
+
- [ ] `-32002` Task Not Cancelable Error
|
256
|
+
- [ ] `-32003` Push Notification Not Supported Error
|
257
|
+
- [ ] `-32004` Unsupported Operation Error
|
258
|
+
- [ ] `-32005` Content Type Not Supported Error
|
259
|
+
- [ ] `-32006` Invalid Agent Response Error
|
260
|
+
|
261
|
+
### 9.3 Error Response Structure
|
262
|
+
- [ ] JSONRPCError object structure
|
263
|
+
- [ ] Error code field
|
264
|
+
- [ ] Error message field
|
265
|
+
- [ ] Optional error data field
|
266
|
+
- [ ] Transport-specific error mapping
|
267
|
+
- [ ] HTTP status code mapping for REST
|
268
|
+
|
269
|
+
## 10. Enterprise Features
|
270
|
+
|
271
|
+
### 10.1 Observability
|
272
|
+
- [ ] Request tracing support
|
273
|
+
- [ ] Logging infrastructure
|
274
|
+
- [ ] Metrics collection
|
275
|
+
- [ ] Performance monitoring
|
276
|
+
- [ ] Debug capabilities
|
277
|
+
|
278
|
+
### 10.2 Resource Management
|
279
|
+
- [ ] Rate limiting implementation
|
280
|
+
- [ ] Concurrency controls
|
281
|
+
- [ ] Resource limits
|
282
|
+
- [ ] Abuse protection
|
283
|
+
- [ ] Overload protection
|
284
|
+
|
285
|
+
### 10.3 Data Privacy
|
286
|
+
- [ ] Privacy regulation compliance
|
287
|
+
- [ ] Data minimization
|
288
|
+
- [ ] Sensitive data handling
|
289
|
+
- [ ] Data retention policies
|
290
|
+
- [ ] PII protection
|
291
|
+
|
292
|
+
### 10.4 Input Validation
|
293
|
+
- [ ] RPC parameter validation
|
294
|
+
- [ ] Message content validation
|
295
|
+
- [ ] Artifact structure validation
|
296
|
+
- [ ] Injection attack prevention
|
297
|
+
- [ ] Schema validation
|
298
|
+
|
299
|
+
## 11. Extensions
|
300
|
+
|
301
|
+
### 11.1 Extension Framework
|
302
|
+
- [ ] Extension URI specification
|
303
|
+
- [ ] Extension metadata structure
|
304
|
+
- [ ] Extension method naming conventions
|
305
|
+
- [ ] Extension backward compatibility
|
306
|
+
- [ ] Extension documentation requirements
|
307
|
+
|
308
|
+
### 11.2 Extension Types
|
309
|
+
- [ ] Protocol extensions
|
310
|
+
- [ ] Custom method extensions
|
311
|
+
- [ ] Data structure extensions
|
312
|
+
- [ ] Transport extensions
|
313
|
+
- [ ] Agent-specific extensions
|
314
|
+
|
315
|
+
## 12. Compliance & Testing
|
316
|
+
|
317
|
+
### 12.1 Agent Compliance
|
318
|
+
- [ ] Transport support requirements validation
|
319
|
+
- [ ] Agent Card exposure requirement
|
320
|
+
- [ ] Core method implementation (send, get, cancel)
|
321
|
+
- [ ] Optional method implementation tracking
|
322
|
+
- [ ] Multi-transport compliance verification
|
323
|
+
- [ ] Data format compliance validation
|
324
|
+
|
325
|
+
### 12.2 Client Compliance
|
326
|
+
- [ ] Multi-transport capability
|
327
|
+
- [ ] Agent Card processing
|
328
|
+
- [ ] Transport selection logic
|
329
|
+
- [ ] Core method usage
|
330
|
+
- [ ] Error handling compliance
|
331
|
+
- [ ] Authentication support
|
332
|
+
|
333
|
+
### 12.3 Compliance Testing
|
334
|
+
- [ ] Transport interoperability tests
|
335
|
+
- [ ] Method mapping verification
|
336
|
+
- [ ] Error handling tests
|
337
|
+
- [ ] Data format validation
|
338
|
+
- [ ] JSON schema validation against TypeScript definitions
|
339
|
+
|
340
|
+
## 13. Developer Experience
|
341
|
+
|
342
|
+
### 13.1 SDKs & Libraries
|
343
|
+
- [ ] Python SDK implementation
|
344
|
+
- [ ] JavaScript/TypeScript SDK implementation
|
345
|
+
- [ ] Client library implementations
|
346
|
+
- [ ] Server library implementations
|
347
|
+
- [ ] Common utilities and helpers
|
348
|
+
|
349
|
+
### 13.2 Documentation
|
350
|
+
- [ ] Protocol specification documentation
|
351
|
+
- [ ] API reference documentation
|
352
|
+
- [ ] Integration guides
|
353
|
+
- [ ] Best practices guide
|
354
|
+
- [ ] Tutorial documentation
|
355
|
+
- [ ] Code examples and samples
|
356
|
+
|
357
|
+
### 13.3 Tooling
|
358
|
+
- [ ] Protocol Buffer code generation
|
359
|
+
- [ ] JSON schema validation tools
|
360
|
+
- [ ] Agent Card validation tools
|
361
|
+
- [ ] Testing frameworks
|
362
|
+
- [ ] CLI tools
|
363
|
+
|
364
|
+
## 14. Sample Implementations
|
365
|
+
|
366
|
+
### 14.1 Python Samples
|
367
|
+
- [ ] LangGraph integration example
|
368
|
+
- [ ] CrewAI integration example
|
369
|
+
- [ ] Google ADK integration example
|
370
|
+
- [ ] Python CLI host example
|
371
|
+
- [ ] Python orchestrator example
|
372
|
+
|
373
|
+
### 14.2 JavaScript/TypeScript Samples
|
374
|
+
- [ ] Genkit integration example
|
375
|
+
- [ ] JavaScript CLI host example
|
376
|
+
- [ ] Express-based server implementation
|
377
|
+
|
378
|
+
### 14.3 Demo Applications
|
379
|
+
- [ ] Web UI demo application
|
380
|
+
- [ ] Multi-agent orchestration demo
|
381
|
+
- [ ] Conversation visualization
|
382
|
+
- [ ] Task and event visualization
|
383
|
+
- [ ] Agent discovery demonstration
|
384
|
+
|
385
|
+
## 15. Advanced Features
|
386
|
+
|
387
|
+
### 15.1 Task Management
|
388
|
+
- [ ] Task state persistence
|
389
|
+
- [ ] In-memory task storage
|
390
|
+
- [ ] Task history management
|
391
|
+
- [ ] Multi-session task support
|
392
|
+
- [ ] Task cancellation logic
|
393
|
+
- [ ] Task result caching
|
394
|
+
|
395
|
+
### 15.2 File Handling
|
396
|
+
- [ ] File upload support
|
397
|
+
- [ ] File download support
|
398
|
+
- [ ] Base64 encoding/decoding
|
399
|
+
- [ ] File URI resolution
|
400
|
+
- [ ] File storage management
|
401
|
+
- [ ] MIME type handling
|
402
|
+
|
403
|
+
### 15.3 Forms & Structured Data
|
404
|
+
- [ ] Form data in DataPart
|
405
|
+
- [ ] Form submission handling
|
406
|
+
- [ ] Structured input/output
|
407
|
+
- [ ] Schema-based validation
|
408
|
+
- [ ] JSON-serializable data support
|
409
|
+
|
410
|
+
### 15.4 Multi-Agent Coordination
|
411
|
+
- [ ] Agent-to-agent delegation
|
412
|
+
- [ ] Task context sharing
|
413
|
+
- [ ] Reference task IDs
|
414
|
+
- [ ] Cross-agent collaboration
|
415
|
+
- [ ] Agent discovery mechanisms
|
416
|
+
|
417
|
+
---
|
418
|
+
|
419
|
+
**Version**: 0.3.0
|
420
|
+
**Last Updated**: Based on protocol specification v0.3.0
|
421
|
+
**Total Features**: 250+
|
422
|
+
|
423
|
+
This roadmap represents the comprehensive feature set defined in the Agent2Agent (A2A) Protocol specification, organized into logical categories for implementation planning and tracking.
|
@@ -0,0 +1,124 @@
|
|
1
|
+
---
|
2
|
+
hide:
|
3
|
+
- toc
|
4
|
+
---
|
5
|
+
|
6
|
+
<!-- markdownlint-disable MD041 -->
|
7
|
+
<div style="text-align: center;">
|
8
|
+
<div class="centered-logo-text-group">
|
9
|
+
<img src="assets/a2a-logo-black.svg" alt="Agent2Agent Protocol Logo" width="100">
|
10
|
+
<h1>Agent2Agent (A2A) Protocol</h1>
|
11
|
+
</div>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
## What is A2A Protocol?
|
15
|
+
|
16
|
+
The **Agent2Agent (A2A) Protocol** is an open standard developed by Google and donated to the Linux Foundation designed to enable seamless communication and collaboration between AI agents.
|
17
|
+
|
18
|
+
In a world where agents are built using diverse frameworks and by different vendors, A2A provides a common language, breaking down silos and fostering interoperability.
|
19
|
+
|
20
|
+
!!! abstract ""
|
21
|
+
Build with
|
22
|
+
**[{class="twemoji lg middle"} ADK](https://google.github.io/adk-docs/)** _(or any framework)_,
|
23
|
+
equip with **[{class="twemoji lg middle"} MCP](https://modelcontextprotocol.io)** _(or any tool)_,
|
24
|
+
and communicate with
|
25
|
+
**{class="twemoji sm middle"} A2A**,
|
26
|
+
to remote agents, local agents, and humans.
|
27
|
+
|
28
|
+
## Get started with Agent2Agent (A2A) Protocol
|
29
|
+
|
30
|
+
<div class="grid cards" markdown>
|
31
|
+
|
32
|
+
- :material-play-circle:{ .lg .middle } **Video** Intro in <8 min
|
33
|
+
|
34
|
+
<iframe width="560" height="315" src="https://www.youtube.com/embed/Fbr_Solax1w?si=QxPMEEiO5kLr5_0F" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
|
35
|
+
|
36
|
+
- :material-book-open:{ .lg .middle } **Read the Introduction**
|
37
|
+
|
38
|
+
Understand the core ideas behind A2A.
|
39
|
+
|
40
|
+
[:octicons-arrow-right-24: What is A2A?](./topics/what-is-a2a.md)
|
41
|
+
|
42
|
+
[:octicons-arrow-right-24: Key Concepts](./topics/key-concepts.md)
|
43
|
+
|
44
|
+
- :material-file-document-outline:{ .lg .middle } **Dive into the Specification**
|
45
|
+
|
46
|
+
Explore the detailed technical definition of the A2A protocol.
|
47
|
+
|
48
|
+
[:octicons-arrow-right-24: Protocol Specification](./specification.md)
|
49
|
+
|
50
|
+
- :material-application-cog-outline:{ .lg .middle } **Follow the Tutorials**
|
51
|
+
|
52
|
+
Build your first A2A-compliant agent with our step-by-step Python quickstart.
|
53
|
+
|
54
|
+
[:octicons-arrow-right-24: Python Tutorial](./tutorials/python/1-introduction.md)
|
55
|
+
|
56
|
+
- :material-code-braces:{ .lg .middle } **Explore Code Samples**
|
57
|
+
|
58
|
+
See A2A in action with sample clients, servers, and agent framework integrations.
|
59
|
+
|
60
|
+
[:fontawesome-brands-github: GitHub Samples](https://github.com/a2aproject/a2a-samples)
|
61
|
+
|
62
|
+
- :material-code-braces:{ .lg .middle } **Download the SDK**
|
63
|
+
|
64
|
+
[:fontawesome-brands-python: Python](https://github.com/a2aproject/a2a-python)
|
65
|
+
|
66
|
+
[:fontawesome-brands-js: JavaScript](https://github.com/a2aproject/a2a-js)
|
67
|
+
|
68
|
+
[:fontawesome-brands-java: Java](https://github.com/a2aproject/a2a-java)
|
69
|
+
|
70
|
+
[:octicons-code-24: C#/.NET](https://github.com/a2aproject/a2a-dotnet)
|
71
|
+
|
72
|
+
[:fontawesome-brands-golang: Golang](https://github.com/a2aproject/a2a-go)
|
73
|
+
|
74
|
+
</div>
|
75
|
+
|
76
|
+
## Why use the A2A Protocol
|
77
|
+
|
78
|
+
<div style="text-align:center">
|
79
|
+
|
80
|
+
```mermaid
|
81
|
+
graph LR
|
82
|
+
User(🧑💻 User) <--> ClientAgent(🤖 Client Agent)
|
83
|
+
ClientAgent --> A2A1(**↔️ A2A**) --> RemoteAgent1(🤖 Remote Agent 1)
|
84
|
+
ClientAgent --> A2A2(**↔️ A2A**) --> RemoteAgent2(🤖 Remote Agent 2)
|
85
|
+
|
86
|
+
style User fill:#fdebd0,stroke:#e67e22,stroke-width:2px
|
87
|
+
style ClientAgent fill:#d6eaf8,stroke:#3498db,stroke-width:2px
|
88
|
+
style RemoteAgent1 fill:#d6eaf8,stroke:#3498db,stroke-width:2px
|
89
|
+
style RemoteAgent2 fill:#d6eaf8,stroke:#3498db,stroke-width:2px
|
90
|
+
style A2A1 fill:#ebedef,stroke:#909497,stroke-width:2px
|
91
|
+
style A2A2 fill:#ebedef,stroke:#909497,stroke-width:2px
|
92
|
+
```
|
93
|
+
|
94
|
+
</div>
|
95
|
+
|
96
|
+
<div class="grid cards" markdown>
|
97
|
+
|
98
|
+
- :material-account-group-outline:{ .lg .middle } **Interoperability**
|
99
|
+
|
100
|
+
Connect agents built on different platforms (LangGraph, CrewAI, Semantic Kernel, custom solutions) to create powerful, composite AI systems.
|
101
|
+
|
102
|
+
- :material-lan-connect:{ .lg .middle } **Complex Workflows**
|
103
|
+
|
104
|
+
Enable agents to delegate sub-tasks, exchange information, and coordinate actions to solve complex problems that a single agent cannot.
|
105
|
+
|
106
|
+
- :material-shield-key-outline:{ .lg .middle } **Secure & Opaque**
|
107
|
+
|
108
|
+
Agents interact without needing to share internal memory, tools, or proprietary logic, ensuring security and preserving intellectual property.
|
109
|
+
|
110
|
+
</div>
|
111
|
+
|
112
|
+
---
|
113
|
+
|
114
|
+
## How does A2A work with MCP?
|
115
|
+
|
116
|
+
{width="60%"}
|
117
|
+
{style="text-align: center; margin-bottom:1em; margin-top:1em;"}
|
118
|
+
|
119
|
+
A2A and [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) are complementary standards for building robust agentic applications:
|
120
|
+
|
121
|
+
- **Model Context Protocol (MCP)**: Provides [agent-to-tool communication](https://cloud.google.com/discover/what-is-model-context-protocol). It's a complementary standard that standardizes how an agent connects to its tools, APIs, and resources to get information.
|
122
|
+
- **IBM ACP**: [Incorporated into the A2A Protocol](https://github.com/orgs/i-am-bee/discussions/5)
|
123
|
+
- **Cisco agntcy**: A framework for building the internal logic of a single, complex agent system, often with a supervisor/expert structure.
|
124
|
+
- **A2A**: Provides agent-to-agent communication. As a universal, decentralized standard, A2A acts as the public internet that allows [ai agents](https://cloud.google.com/discover/what-are-ai-agents)—including those using MCP, or built with frameworks like agntcy—to interoperate, collaborate, and share their findings.
|