a2a 0.1.0 → 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.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/.agent-docs/ROADMAP.md +423 -0
  3. data/.agent-docs/index.md +124 -0
  4. data/.agent-docs/llms.txt +318 -0
  5. data/.agent-docs/specification/json.json +2575 -0
  6. data/.agent-docs/specification.md +1924 -0
  7. data/.agent-docs/topics/a2a-and-mcp.md +132 -0
  8. data/.agent-docs/topics/agent-discovery.md +96 -0
  9. data/.agent-docs/topics/enterprise-ready.md +139 -0
  10. data/.agent-docs/topics/extensions.md +260 -0
  11. data/.agent-docs/topics/key-concepts.md +99 -0
  12. data/.agent-docs/topics/life-of-a-task.md +255 -0
  13. data/.agent-docs/topics/streaming-and-async.md +111 -0
  14. data/.agent-docs/topics/what-is-a2a.md +218 -0
  15. data/.agent-docs/tutorials/index.md +31 -0
  16. data/.agent-docs/tutorials/python/1-introduction.md +32 -0
  17. data/.agent-docs/tutorials/python/2-setup.md +55 -0
  18. data/.agent-docs/tutorials/python/3-agent-skills-and-card.md +48 -0
  19. data/.agent-docs/tutorials/python/4-agent-executor.md +57 -0
  20. data/.agent-docs/tutorials/python/5-start-server.md +55 -0
  21. data/.agent-docs/tutorials/python/6-interact-with-server.md +95 -0
  22. data/.agent-docs/tutorials/python/7-streaming-and-multiturn.md +97 -0
  23. data/.agent-docs/tutorials/python/8-next-steps.md +40 -0
  24. data/.agent-docs/types.ts +1544 -0
  25. data/.agent-docs/types_mapping.md +196 -0
  26. data/.claude/commands/gemfile/update.md +52 -0
  27. data/.claude/settings.local.json +23 -0
  28. data/.tool-versions +1 -1
  29. data/CHANGELOG.md +68 -1
  30. data/CLAUDE.md +98 -0
  31. data/README.md +20 -14
  32. data/Rakefile +1 -3
  33. data/WARP.md +115 -0
  34. data/lib/a2a/extensions/json_deserialization.rb +1 -3
  35. data/lib/a2a/types/agent_capabilities.rb +3 -0
  36. data/lib/a2a/types/agent_card.rb +49 -17
  37. data/lib/a2a/types/agent_card_signature.rb +17 -0
  38. data/lib/a2a/types/agent_extension.rb +19 -0
  39. data/lib/a2a/types/agent_interface.rb +13 -0
  40. data/lib/a2a/types/agent_provider.rb +2 -2
  41. data/lib/a2a/types/agent_skill.rb +11 -4
  42. data/lib/a2a/types/api_key_security_scheme.rb +15 -0
  43. data/lib/a2a/types/artifact.rb +10 -15
  44. data/lib/a2a/types/authenticated_extended_card_not_configured_error.rb +43 -0
  45. data/lib/a2a/types/authorization_code_oauth_flow.rb +22 -0
  46. data/lib/a2a/types/cancel_task_request.rb +5 -2
  47. data/lib/a2a/types/cancel_task_response.rb +3 -3
  48. data/lib/a2a/types/client_credentials_oauth_flow.rb +16 -0
  49. data/lib/a2a/types/content_type_not_supported_error.rb +42 -0
  50. data/lib/a2a/types/data_part.rb +5 -8
  51. data/lib/a2a/types/delete_task_push_notification_config_params.rb +9 -0
  52. data/lib/a2a/types/delete_task_push_notification_config_request.rb +18 -0
  53. data/lib/a2a/types/delete_task_push_notification_config_response.rb +13 -0
  54. data/lib/a2a/types/error.rb +19 -0
  55. data/lib/a2a/types/error_codes.rb +6 -0
  56. data/lib/a2a/types/file_base.rb +12 -0
  57. data/lib/a2a/types/file_part.rb +7 -9
  58. data/lib/a2a/types/file_with_bytes.rb +9 -0
  59. data/lib/a2a/types/file_with_uri.rb +9 -0
  60. data/lib/a2a/types/get_authenticated_extended_card_request.rb +15 -0
  61. data/lib/a2a/types/get_authenticated_extended_card_response.rb +13 -0
  62. data/lib/a2a/types/get_task_push_notification_config_params.rb +9 -0
  63. data/lib/a2a/types/get_task_push_notification_config_request.rb +21 -0
  64. data/lib/a2a/types/get_task_push_notification_request.rb +5 -2
  65. data/lib/a2a/types/get_task_push_notification_response.rb +4 -4
  66. data/lib/a2a/types/get_task_request.rb +5 -2
  67. data/lib/a2a/types/get_task_response.rb +3 -3
  68. data/lib/a2a/types/http_auth_security_scheme.rb +18 -0
  69. data/lib/a2a/types/implicit_oauth_flow.rb +16 -0
  70. data/lib/a2a/types/invalid_agent_response_error.rb +41 -0
  71. data/lib/a2a/types/list_task_push_notification_config_params.rb +8 -0
  72. data/lib/a2a/types/list_task_push_notification_config_request.rb +18 -0
  73. data/lib/a2a/types/list_task_push_notification_config_response.rb +13 -0
  74. data/lib/a2a/types/message.rb +24 -4
  75. data/lib/a2a/types/message_send_configuration.rb +20 -0
  76. data/lib/a2a/types/message_send_params.rb +16 -0
  77. data/lib/a2a/types/mutual_tls_security_scheme.rb +9 -0
  78. data/lib/a2a/types/oauth2_security_scheme.rb +16 -0
  79. data/lib/a2a/types/oauth_flows.rb +20 -0
  80. data/lib/a2a/types/openid_connect_security_scheme.rb +12 -0
  81. data/lib/a2a/types/part.rb +2 -1
  82. data/lib/a2a/types/part_base.rb +9 -0
  83. data/lib/a2a/types/password_oauth_flow.rb +16 -0
  84. data/lib/a2a/types/push_notification_authentication_info.rb +12 -0
  85. data/lib/a2a/types/push_notification_config.rb +11 -6
  86. data/lib/a2a/types/push_notification_not_supported_error.rb +37 -10
  87. data/lib/a2a/types/request.rb +15 -0
  88. data/lib/a2a/types/security_scheme.rb +11 -0
  89. data/lib/a2a/types/security_scheme_base.rb +9 -0
  90. data/lib/a2a/types/send_message_request.rb +18 -0
  91. data/lib/a2a/types/send_message_response.rb +13 -0
  92. data/lib/a2a/types/send_streaming_message_request.rb +18 -0
  93. data/lib/a2a/types/send_streaming_message_response.rb +15 -0
  94. data/lib/a2a/types/set_task_push_notification_config_request.rb +18 -0
  95. data/lib/a2a/types/set_task_push_notification_request.rb +5 -2
  96. data/lib/a2a/types/set_task_push_notification_response.rb +4 -4
  97. data/lib/a2a/types/task.rb +15 -11
  98. data/lib/a2a/types/task_artifact_update_event.rb +18 -7
  99. data/lib/a2a/types/task_not_cancelable_error.rb +37 -10
  100. data/lib/a2a/types/task_not_found_error.rb +37 -10
  101. data/lib/a2a/types/task_resubscription_request.rb +5 -2
  102. data/lib/a2a/types/task_state.rb +2 -1
  103. data/lib/a2a/types/task_status_update_event.rb +13 -6
  104. data/lib/a2a/types/text_part.rb +5 -8
  105. data/lib/a2a/types/transport_protocol.rb +6 -0
  106. data/lib/a2a/types/unsupported_operation_error.rb +37 -10
  107. data/lib/a2a/types.rb +13 -0
  108. data/lib/a2a/version.rb +1 -1
  109. data/lib/a2a.rb +15 -5
  110. metadata +101 -19
  111. data/lib/a2a/types/agent_authentication.rb +0 -13
  112. data/lib/a2a/types/authentication_info.rb +0 -9
  113. data/lib/a2a/types/file_content.rb +0 -18
  114. data/lib/a2a/types/internal_error.rb +0 -15
  115. data/lib/a2a/types/invalid_params_error.rb +0 -15
  116. data/lib/a2a/types/invalid_request_error.rb +0 -15
  117. data/lib/a2a/types/json_parse_error.rb +0 -15
  118. data/lib/a2a/types/jsonrpc_error.rb +0 -15
  119. data/lib/a2a/types/jsonrpc_message.rb +0 -12
  120. data/lib/a2a/types/jsonrpc_request.rb +0 -15
  121. data/lib/a2a/types/jsonrpc_response.rb +0 -12
  122. data/lib/a2a/types/method_not_found_error.rb +0 -15
  123. data/lib/a2a/types/send_task_request.rb +0 -15
  124. data/lib/a2a/types/send_task_response.rb +0 -13
  125. data/lib/a2a/types/send_task_streaming_request.rb +0 -15
  126. data/lib/a2a/types/send_task_streaming_response.rb +0 -15
  127. data/lib/a2a/types/task_send_params.rb +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a735724d190d582f29a71d683d2e9c0eff95ff3ec90dd77e29ef3f091e7c8338
4
- data.tar.gz: 7af91cf7fe7e0a112654a016955139672a47f3e55fe2bbfe4a66019a7b82dda1
3
+ metadata.gz: dcc04a0563aab2d967c351284516fac3f491435c2fd6cf3a0b5854e538132ed5
4
+ data.tar.gz: c7f857d4d8fd6c6efa0ef9e1f00aae5b5ddbde377c5b386d4acfb5b7601c8ce3
5
5
  SHA512:
6
- metadata.gz: 7569e210cb5c08ec6c18dc612a8690472ce117b7aaac15ded258a314dc33cc82b0cf845d0a4d1be3a0cc3cdc36872f478db6f0955ed3c34e3b45e85886a0c31d
7
- data.tar.gz: ccb3d85eccdc0934d52b76f2b4b7bcbc598e16a3fbc8d4e1c24c67600708923e5b25bfdf75776bab7217703aa772424ace4a0f2865952fe2a2f112df71425e6a
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
+ **[![ADK Logo](https://google.github.io/adk-docs/assets/agent-development-kit.png){class="twemoji lg middle"} ADK](https://google.github.io/adk-docs/)** _(or any framework)_,
23
+ equip with **[![MCP Logo](https://modelcontextprotocol.io/mcp.png){class="twemoji lg middle"} MCP](https://modelcontextprotocol.io)** _(or any tool)_,
24
+ and communicate with
25
+ **![A2A Logo](./assets/a2a-logo-black.svg){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
+ ![A2A MCP Graphic](assets/a2a-mcp-readme.png){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.