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
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Error for invalid parameters
5
- class InvalidParamsError < JSONRPCError
6
- # @return [Integer] Error code (-32602)
7
- attribute :code, Types::Integer.constant(ErrorCodes::INVALID_PARAMS)
8
-
9
- # @return [String] Error message
10
- attribute :message, Types::String.constant('Invalid parameters')
11
-
12
- # @return [Object, nil] Additional error data
13
- attribute? :data, Types::Nominal::Any.optional
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Error for invalid request structure
5
- class InvalidRequestError < JSONRPCError
6
- # @return [Integer] Error code (-32600)
7
- attribute :code, Types::Integer.constant(ErrorCodes::INVALID_REQUEST)
8
-
9
- # @return [String] Error message
10
- attribute :message, Types::String.constant('Request payload validation error')
11
-
12
- # @return [Object, nil] Additional error data
13
- attribute? :data, Types::Nominal::Any.optional
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Error for invalid JSON payload
5
- class JSONParseError < JSONRPCError
6
- # @return [Integer] Error code (-32700)
7
- attribute :code, Types::Integer.constant(ErrorCodes::PARSE_ERROR)
8
-
9
- # @return [String] Error message
10
- attribute :message, Types::String.constant('Invalid JSON payload')
11
-
12
- # @return [Object, nil] Additional error data
13
- attribute? :data, Types::Nominal::Any.optional
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Represents a JSON-RPC error object.
5
- class JSONRPCError < ProtocolStruct
6
- # @return [Integer] A number indicating the error type that occurred.
7
- attribute :code, Types::Integer.constant(ErrorCodes::PARSE_ERROR)
8
-
9
- # @return [String] A string providing a short description of the error.
10
- attribute :message, Types::String.constant('Invalid JSON payload')
11
-
12
- # @return [Object, nil] Optional additional data about the error.
13
- attribute? :data, Types::Nominal::Any.optional
14
- end
15
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Represents a base message for JSON-RPC communication.
5
- class JSONRPCMessage < ProtocolStruct
6
- # @return [String] Specifies the JSON-RPC version. Must be "2.0".
7
- attribute? :jsonrpc, Types::String.constant('2.0')
8
-
9
- # @return [Integer, String, nil] Request identifier. Responses must have the same ID as the request they relate to.
10
- attribute? :id, (Types::Integer | Types::String).optional
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Represents a JSON-RPC request object.
5
- class JSONRPCRequest < JSONRPCMessage
6
- # @return [String] The name of the method to be invoked.
7
- attribute :method, Types::String
8
-
9
- # @return [Hash, nil] Parameters for the method. Can be a structured object, an array, or null/omitted.
10
- attribute? :params, Types::Hash.optional
11
-
12
- # @return [String] The name of the method to be invoked.
13
- def method = attributes[:method]
14
- end
15
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Represents a JSON-RPC response object.
5
- class JSONRPCResponse < JSONRPCMessage
6
- # @return [Object, nil] The result of the method invocation. Required on success.
7
- attribute? :result, Types::Nominal::Any.optional
8
-
9
- # @return [JSONRPCError, nil] An error object if an error occurred during the request. Required on failure.
10
- attribute? :error, Types::Constructor(JSONRPCError).optional
11
- end
12
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Error for method not found
5
- class MethodNotFoundError < JSONRPCError
6
- # @return [Integer] Error code (-32601)
7
- attribute :code, Types::Integer.constant(ErrorCodes::METHOD_NOT_FOUND)
8
-
9
- # @return [String] Error message
10
- attribute :message, Types::String.constant('Method not found')
11
-
12
- # @return [nil] No additional data
13
- attribute? :data, Types::Nil.constant(nil)
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Request to send a message/initiate a task.
5
- class SendTaskRequest < JSONRPCRequest
6
- # @return [String] Method name for sending a task message.
7
- attribute :method, Types::String.constant('tasks/send')
8
-
9
- # @return [TaskSendParams] Parameters for the send task method.
10
- attribute :params, Types::Constructor(TaskSendParams)
11
-
12
- # @return [String] The name of the method to be invoked.
13
- def method = attributes[:method]
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Response to a `tasks/send` request.
5
- # Contains the Task object or an error.
6
- class SendTaskResponse < JSONRPCResponse
7
- # @return [Task, nil] The resulting task if successful.
8
- attribute? :result, Types::Constructor(Task).optional
9
-
10
- # @return [JSONRPCError, nil] Error information if the request failed.
11
- attribute? :error, Types::Constructor(JSONRPCError).optional
12
- end
13
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Request to send a message/initiate a task and subscribe to streaming updates.
5
- class SendTaskStreamingRequest < JSONRPCRequest
6
- # @return [String] Method name for sending a task message and subscribing to updates.
7
- attribute :method, Types::String.constant('tasks/sendSubscribe')
8
-
9
- # @return [TaskSendParams] Parameters for the streaming task send method.
10
- attribute :params, Types::Constructor(TaskSendParams)
11
-
12
- # @return [String] Method name for sending a task message and subscribing to updates.
13
- def method = attributes[:method]
14
- end
15
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Response to a streaming task operation, either through `tasks/sendSubscribe` or a subscription.
5
- # Contains a TaskStatusUpdateEvent, TaskArtifactUpdateEvent, or an error.
6
- class SendTaskStreamingResponse < JSONRPCResponse
7
- # @return [TaskStatusUpdateEvent, TaskArtifactUpdateEvent, nil] Event data if successful.
8
- attribute? :result do
9
- Types.Constructor(TaskStatusUpdateEvent) | Types.Constructor(TaskArtifactUpdateEvent)
10
- end.optional
11
-
12
- # @return [JSONRPCError, nil] Error information if the request failed.
13
- attribute? :error, Types::Constructor(JSONRPCError).optional
14
- end
15
- end
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module A2A
4
- # Parameters for the `tasks/send` method.
5
- class TaskSendParams < ProtocolStruct
6
- # @return [String] Unique identifier for the task being initiated or continued.
7
- attribute :id, Types::String
8
-
9
- # @return [String, nil] Optional identifier for the session this task belongs to. If not provided, a new
10
- # session might be implicitly created depending on the agent.
11
- attribute? :session_id, Types::String.optional
12
-
13
- # @return [Message] The message content to send to the agent for processing.
14
- attribute :message, Types::Constructor(Message)
15
-
16
- # @return [PushNotificationConfig, nil] Optional pushNotification information for receiving notifications about
17
- # this task. Requires agent capability.
18
- attribute? :push_notification, Types::Constructor(PushNotificationConfig).optional
19
-
20
- # @return [Integer, nil] Optional parameter to specify how much message history to include in the response.
21
- attribute? :history_length, Types::Integer.optional
22
-
23
- # @return [Hash, nil] Optional metadata associated with sending this message.
24
- attribute? :metadata, Types::Hash.optional
25
- end
26
- end