diff --git a/buf.gen.yaml b/buf.gen.yaml index 887982cbc..85106a5ee 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -2,7 +2,7 @@ version: v2 inputs: - git_repo: https://github.com/a2aproject/A2A.git - ref: v1.0.0-rc + ref: main subdir: specification managed: enabled: true diff --git a/src/a2a/server/apps/jsonrpc/jsonrpc_app.py b/src/a2a/server/apps/jsonrpc/jsonrpc_app.py index 9879b5014..7f44909ca 100644 --- a/src/a2a/server/apps/jsonrpc/jsonrpc_app.py +++ b/src/a2a/server/apps/jsonrpc/jsonrpc_app.py @@ -39,7 +39,7 @@ GetExtendedAgentCardRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, - ListTaskPushNotificationConfigRequest, + ListTaskPushNotificationConfigsRequest, ListTasksRequest, SendMessageRequest, SubscribeToTaskRequest, @@ -171,7 +171,7 @@ class JSONRPCApplication(ABC): 'CancelTask': CancelTaskRequest, 'CreateTaskPushNotificationConfig': CreateTaskPushNotificationConfigRequest, 'GetTaskPushNotificationConfig': GetTaskPushNotificationConfigRequest, - 'ListTaskPushNotificationConfig': ListTaskPushNotificationConfigRequest, + 'ListTaskPushNotificationConfigs': ListTaskPushNotificationConfigsRequest, 'DeleteTaskPushNotificationConfig': DeleteTaskPushNotificationConfigRequest, 'SubscribeToTask': SubscribeToTaskRequest, 'GetExtendedAgentCard': GetExtendedAgentCardRequest, @@ -486,9 +486,9 @@ async def _process_non_streaming_request( context, ) ) - case ListTaskPushNotificationConfigRequest(): + case ListTaskPushNotificationConfigsRequest(): handler_result = ( - await self.handler.list_push_notification_config( + await self.handler.list_push_notification_configs( request_obj, context, ) diff --git a/src/a2a/server/request_handlers/default_request_handler.py b/src/a2a/server/request_handlers/default_request_handler.py index 387fc864d..63d0fdc74 100644 --- a/src/a2a/server/request_handlers/default_request_handler.py +++ b/src/a2a/server/request_handlers/default_request_handler.py @@ -32,8 +32,8 @@ DeleteTaskPushNotificationConfigRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, - ListTaskPushNotificationConfigRequest, - ListTaskPushNotificationConfigResponse, + ListTaskPushNotificationConfigsRequest, + ListTaskPushNotificationConfigsResponse, ListTasksRequest, ListTasksResponse, Message, @@ -502,7 +502,6 @@ async def on_create_task_push_notification_config( return TaskPushNotificationConfig( task_id=task_id, - id=params.config_id, push_notification_config=params.config, ) @@ -532,7 +531,6 @@ async def on_get_task_push_notification_config( if config.id == config_id: return TaskPushNotificationConfig( task_id=task_id, - id=config.id, push_notification_config=config, ) @@ -580,12 +578,12 @@ async def on_subscribe_to_task( async for event in result_aggregator.consume_and_emit(consumer): yield event - async def on_list_task_push_notification_config( + async def on_list_task_push_notification_configs( self, - params: ListTaskPushNotificationConfigRequest, + params: ListTaskPushNotificationConfigsRequest, context: ServerCallContext | None = None, - ) -> ListTaskPushNotificationConfigResponse: - """Default handler for 'ListTaskPushNotificationConfig'. + ) -> ListTaskPushNotificationConfigsResponse: + """Default handler for 'ListTaskPushNotificationConfigs'. Requires a `PushConfigStore` to be configured. """ @@ -601,11 +599,10 @@ async def on_list_task_push_notification_config( task_id ) - return ListTaskPushNotificationConfigResponse( + return ListTaskPushNotificationConfigsResponse( configs=[ TaskPushNotificationConfig( task_id=task_id, - id=config.id, push_notification_config=config, ) for config in push_notification_config_list diff --git a/src/a2a/server/request_handlers/jsonrpc_handler.py b/src/a2a/server/request_handlers/jsonrpc_handler.py index 06ca917f2..28c7f78f1 100644 --- a/src/a2a/server/request_handlers/jsonrpc_handler.py +++ b/src/a2a/server/request_handlers/jsonrpc_handler.py @@ -24,7 +24,7 @@ GetExtendedAgentCardRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, - ListTaskPushNotificationConfigRequest, + ListTaskPushNotificationConfigsRequest, ListTasksRequest, SendMessageRequest, SendMessageResponse, @@ -403,15 +403,15 @@ async def list_tasks( request_id, e.error if e.error else InternalError() ) - async def list_push_notification_config( + async def list_push_notification_configs( self, - request: ListTaskPushNotificationConfigRequest, + request: ListTaskPushNotificationConfigsRequest, context: ServerCallContext | None = None, ) -> dict[str, Any]: - """Handles the 'ListTaskPushNotificationConfig' JSON-RPC method. + """Handles the 'ListTaskPushNotificationConfigs' JSON-RPC method. Args: - request: The incoming `ListTaskPushNotificationConfigRequest` object. + request: The incoming `ListTaskPushNotificationConfigsRequest` object. context: Context provided by the server. Returns: @@ -419,10 +419,10 @@ async def list_push_notification_config( """ request_id = self._get_request_id(context) try: - response = await self.request_handler.on_list_task_push_notification_config( + response = await self.request_handler.on_list_task_push_notification_configs( request, context ) - # response is a ListTaskPushNotificationConfigResponse proto + # response is a ListTaskPushNotificationConfigsResponse proto result = MessageToDict(response, preserving_proto_field_name=False) return _build_success_response(request_id, result) except ServerError as e: diff --git a/src/a2a/server/request_handlers/request_handler.py b/src/a2a/server/request_handlers/request_handler.py index 557a6637b..5d5859113 100644 --- a/src/a2a/server/request_handlers/request_handler.py +++ b/src/a2a/server/request_handlers/request_handler.py @@ -9,8 +9,8 @@ DeleteTaskPushNotificationConfigRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, - ListTaskPushNotificationConfigRequest, - ListTaskPushNotificationConfigResponse, + ListTaskPushNotificationConfigsRequest, + ListTaskPushNotificationConfigsResponse, ListTasksRequest, ListTasksResponse, Message, @@ -120,7 +120,7 @@ async def on_message_send_stream( `Event` objects from the agent's execution. Raises: - ServerError(UnsupportedOperationError): By default, if not implemented. + ServerError(UnsupportedOperationError): By default, if not implemented. """ raise ServerError(error=UnsupportedOperationError()) yield @@ -185,12 +185,12 @@ async def on_subscribe_to_task( yield @abstractmethod - async def on_list_task_push_notification_config( + async def on_list_task_push_notification_configs( self, - params: ListTaskPushNotificationConfigRequest, + params: ListTaskPushNotificationConfigsRequest, context: ServerCallContext | None = None, - ) -> ListTaskPushNotificationConfigResponse: - """Handles the 'ListTaskPushNotificationConfig' method. + ) -> ListTaskPushNotificationConfigsResponse: + """Handles the 'ListTaskPushNotificationConfigs' method. Retrieves the current push notification configurations for a task. diff --git a/src/a2a/types/__init__.py b/src/a2a/types/__init__.py index 23bfd615d..9c4fd777b 100644 --- a/src/a2a/types/__init__.py +++ b/src/a2a/types/__init__.py @@ -23,8 +23,8 @@ GetTaskRequest, HTTPAuthSecurityScheme, ImplicitOAuthFlow, - ListTaskPushNotificationConfigRequest, - ListTaskPushNotificationConfigResponse, + ListTaskPushNotificationConfigsRequest, + ListTaskPushNotificationConfigsResponse, ListTasksRequest, ListTasksResponse, Message, @@ -78,6 +78,7 @@ | GetTaskPushNotificationConfigRequest | SubscribeToTaskRequest | GetExtendedAgentCardRequest + | ListTaskPushNotificationConfigsRequest ) @@ -113,8 +114,8 @@ 'InvalidAgentResponseError', 'InvalidParamsError', 'InvalidRequestError', - 'ListTaskPushNotificationConfigRequest', - 'ListTaskPushNotificationConfigResponse', + 'ListTaskPushNotificationConfigsRequest', + 'ListTaskPushNotificationConfigsResponse', 'ListTasksRequest', 'ListTasksResponse', 'Message', diff --git a/src/a2a/types/a2a_pb2.py b/src/a2a/types/a2a_pb2.py index b9d813888..6bd391261 100644 --- a/src/a2a/types/a2a_pb2.py +++ b/src/a2a/types/a2a_pb2.py @@ -30,14 +30,14 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ta2a.proto\x12\x06\x61\x32\x61.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x83\x02\n\x18SendMessageConfiguration\x12\x32\n\x15\x61\x63\x63\x65pted_output_modes\x18\x01 \x03(\tR\x13\x61\x63\x63\x65ptedOutputModes\x12X\n\x18push_notification_config\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigR\x16pushNotificationConfig\x12*\n\x0ehistory_length\x18\x03 \x01(\x05H\x00R\rhistoryLength\x88\x01\x01\x12\x1a\n\x08\x62locking\x18\x04 \x01(\x08R\x08\x62lockingB\x11\n\x0f_history_length\"\x80\x02\n\x04Task\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12/\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusB\x03\xe0\x41\x02R\x06status\x12.\n\tartifacts\x18\x04 \x03(\x0b\x32\x10.a2a.v1.ArtifactR\tartifacts\x12)\n\x07history\x18\x05 \x03(\x0b\x32\x0f.a2a.v1.MessageR\x07history\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\x9f\x01\n\nTaskStatus\x12,\n\x05state\x18\x01 \x01(\x0e\x32\x11.a2a.v1.TaskStateB\x03\xe0\x41\x02R\x05state\x12)\n\x07message\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageR\x07message\x12\x38\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\"\xed\x01\n\x04Part\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x12\n\x03raw\x18\x02 \x01(\x0cH\x00R\x03raw\x12\x12\n\x03url\x18\x03 \x01(\tH\x00R\x03url\x12,\n\x04\x64\x61ta\x18\x04 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00R\x04\x64\x61ta\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1a\n\x08\x66ilename\x18\x06 \x01(\tR\x08\x66ilename\x12\x1d\n\nmedia_type\x18\x07 \x01(\tR\tmediaTypeB\t\n\x07\x63ontent\"\xb8\x02\n\x07Message\x12\"\n\nmessage_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\tmessageId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12\x17\n\x07task_id\x18\x03 \x01(\tR\x06taskId\x12%\n\x04role\x18\x04 \x01(\x0e\x32\x0c.a2a.v1.RoleB\x03\xe0\x41\x02R\x04role\x12\'\n\x05parts\x18\x05 \x03(\x0b\x32\x0c.a2a.v1.PartB\x03\xe0\x41\x02R\x05parts\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\x12,\n\x12reference_task_ids\x18\x08 \x03(\tR\x10referenceTaskIds\"\xe4\x01\n\x08\x41rtifact\x12$\n\x0b\x61rtifact_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\nartifactId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x04 \x01(\tR\x0b\x64\x65scription\x12\'\n\x05parts\x18\x05 \x03(\x0b\x32\x0c.a2a.v1.PartB\x03\xe0\x41\x02R\x05parts\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\"\xc5\x01\n\x15TaskStatusUpdateEvent\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12/\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusB\x03\xe0\x41\x02R\x06status\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadataJ\x04\x08\x04\x10\x05\"\xfa\x01\n\x17TaskArtifactUpdateEvent\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12\x31\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x10.a2a.v1.ArtifactB\x03\xe0\x41\x02R\x08\x61rtifact\x12\x16\n\x06\x61ppend\x18\x04 \x01(\x08R\x06\x61ppend\x12\x1d\n\nlast_chunk\x18\x05 \x01(\x08R\tlastChunk\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\x99\x01\n\x16PushNotificationConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x03url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x03url\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x42\n\x0e\x61uthentication\x18\x04 \x01(\x0b\x32\x1a.a2a.v1.AuthenticationInfoR\x0e\x61uthentication\"S\n\x12\x41uthenticationInfo\x12\x1b\n\x06scheme\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06scheme\x12 \n\x0b\x63redentials\x18\x02 \x01(\tR\x0b\x63redentials\"\x9f\x01\n\x0e\x41gentInterface\x12\x15\n\x03url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x03url\x12.\n\x10protocol_binding\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0fprotocolBinding\x12\x16\n\x06tenant\x18\x03 \x01(\tR\x06tenant\x12.\n\x10protocol_version\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0fprotocolVersion\"\x9e\x07\n\tAgentCard\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12N\n\x14supported_interfaces\x18\x13 \x03(\x0b\x32\x16.a2a.v1.AgentInterfaceB\x03\xe0\x41\x02R\x13supportedInterfaces\x12\x31\n\x08provider\x18\x04 \x01(\x0b\x32\x15.a2a.v1.AgentProviderR\x08provider\x12\x1d\n\x07version\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07version\x12\x30\n\x11\x64ocumentation_url\x18\x06 \x01(\tH\x00R\x10\x64ocumentationUrl\x88\x01\x01\x12\x42\n\x0c\x63\x61pabilities\x18\x07 \x01(\x0b\x32\x19.a2a.v1.AgentCapabilitiesB\x03\xe0\x41\x02R\x0c\x63\x61pabilities\x12Q\n\x10security_schemes\x18\x08 \x03(\x0b\x32&.a2a.v1.AgentCard.SecuritySchemesEntryR\x0fsecuritySchemes\x12P\n\x15security_requirements\x18\r \x03(\x0b\x32\x1b.a2a.v1.SecurityRequirementR\x14securityRequirements\x12\x33\n\x13\x64\x65\x66\x61ult_input_modes\x18\n \x03(\tB\x03\xe0\x41\x02R\x11\x64\x65\x66\x61ultInputModes\x12\x35\n\x14\x64\x65\x66\x61ult_output_modes\x18\x0b \x03(\tB\x03\xe0\x41\x02R\x12\x64\x65\x66\x61ultOutputModes\x12/\n\x06skills\x18\x0c \x03(\x0b\x32\x12.a2a.v1.AgentSkillB\x03\xe0\x41\x02R\x06skills\x12:\n\nsignatures\x18\x11 \x03(\x0b\x32\x1a.a2a.v1.AgentCardSignatureR\nsignatures\x12\x1e\n\x08icon_url\x18\x12 \x01(\tH\x01R\x07iconUrl\x88\x01\x01\x1aZ\n\x14SecuritySchemesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12,\n\x05value\x18\x02 \x01(\x0b\x32\x16.a2a.v1.SecuritySchemeR\x05value:\x02\x38\x01\x42\x14\n\x12_documentation_urlB\x0b\n\t_icon_urlJ\x04\x08\x03\x10\x04J\x04\x08\t\x10\nJ\x04\x08\x0e\x10\x0fJ\x04\x08\x0f\x10\x10J\x04\x08\x10\x10\x11\"O\n\rAgentProvider\x12\x15\n\x03url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x03url\x12\'\n\x0corganization\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0corganization\"\x9a\x02\n\x11\x41gentCapabilities\x12!\n\tstreaming\x18\x01 \x01(\x08H\x00R\tstreaming\x88\x01\x01\x12\x32\n\x12push_notifications\x18\x02 \x01(\x08H\x01R\x11pushNotifications\x88\x01\x01\x12\x36\n\nextensions\x18\x03 \x03(\x0b\x32\x16.a2a.v1.AgentExtensionR\nextensions\x12\x33\n\x13\x65xtended_agent_card\x18\x05 \x01(\x08H\x02R\x11\x65xtendedAgentCard\x88\x01\x01\x42\x0c\n\n_streamingB\x15\n\x13_push_notificationsB\x16\n\x14_extended_agent_cardJ\x04\x08\x04\x10\x05\"\x91\x01\n\x0e\x41gentExtension\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1a\n\x08required\x18\x03 \x01(\x08R\x08required\x12/\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x06params\"\xac\x02\n\nAgentSkill\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12\x17\n\x04tags\x18\x04 \x03(\tB\x03\xe0\x41\x02R\x04tags\x12\x1a\n\x08\x65xamples\x18\x05 \x03(\tR\x08\x65xamples\x12\x1f\n\x0binput_modes\x18\x06 \x03(\tR\ninputModes\x12!\n\x0coutput_modes\x18\x07 \x03(\tR\x0boutputModes\x12P\n\x15security_requirements\x18\x08 \x03(\x0b\x32\x1b.a2a.v1.SecurityRequirementR\x14securityRequirements\"\x8b\x01\n\x12\x41gentCardSignature\x12!\n\tprotected\x18\x01 \x01(\tB\x03\xe0\x41\x02R\tprotected\x12!\n\tsignature\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tsignature\x12/\n\x06header\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06header\"\xc6\x01\n\x1aTaskPushNotificationConfig\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\x1c\n\x07task_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12]\n\x18push_notification_config\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigB\x03\xe0\x41\x02R\x16pushNotificationConfig\" \n\nStringList\x12\x12\n\x04list\x18\x01 \x03(\tR\x04list\"\xa9\x01\n\x13SecurityRequirement\x12\x42\n\x07schemes\x18\x01 \x03(\x0b\x32(.a2a.v1.SecurityRequirement.SchemesEntryR\x07schemes\x1aN\n\x0cSchemesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12(\n\x05value\x18\x02 \x01(\x0b\x32\x12.a2a.v1.StringListR\x05value:\x02\x38\x01\"\xe6\x03\n\x0eSecurityScheme\x12U\n\x17\x61pi_key_security_scheme\x18\x01 \x01(\x0b\x32\x1c.a2a.v1.APIKeySecuritySchemeH\x00R\x14\x61piKeySecurityScheme\x12[\n\x19http_auth_security_scheme\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.HTTPAuthSecuritySchemeH\x00R\x16httpAuthSecurityScheme\x12T\n\x16oauth2_security_scheme\x18\x03 \x01(\x0b\x32\x1c.a2a.v1.OAuth2SecuritySchemeH\x00R\x14oauth2SecurityScheme\x12k\n\x1fopen_id_connect_security_scheme\x18\x04 \x01(\x0b\x32#.a2a.v1.OpenIdConnectSecuritySchemeH\x00R\x1bopenIdConnectSecurityScheme\x12S\n\x14mtls_security_scheme\x18\x05 \x01(\x0b\x32\x1f.a2a.v1.MutualTlsSecuritySchemeH\x00R\x12mtlsSecuritySchemeB\x08\n\x06scheme\"r\n\x14\x41PIKeySecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08location\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08location\x12\x17\n\x04name\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x04name\"|\n\x16HTTPAuthSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\x06scheme\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06scheme\x12#\n\rbearer_format\x18\x03 \x01(\tR\x0c\x62\x65\x61rerFormat\"\x97\x01\n\x14OAuth2SecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12-\n\x05\x66lows\x18\x02 \x01(\x0b\x32\x12.a2a.v1.OAuthFlowsB\x03\xe0\x41\x02R\x05\x66lows\x12.\n\x13oauth2_metadata_url\x18\x03 \x01(\tR\x11oauth2MetadataUrl\"s\n\x1bOpenIdConnectSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x32\n\x13open_id_connect_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x10openIdConnectUrl\";\n\x17MutualTlsSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\"\xf8\x02\n\nOAuthFlows\x12S\n\x12\x61uthorization_code\x18\x01 \x01(\x0b\x32\".a2a.v1.AuthorizationCodeOAuthFlowH\x00R\x11\x61uthorizationCode\x12S\n\x12\x63lient_credentials\x18\x02 \x01(\x0b\x32\".a2a.v1.ClientCredentialsOAuthFlowH\x00R\x11\x63lientCredentials\x12;\n\x08implicit\x18\x03 \x01(\x0b\x32\x19.a2a.v1.ImplicitOAuthFlowB\x02\x18\x01H\x00R\x08implicit\x12;\n\x08password\x18\x04 \x01(\x0b\x32\x19.a2a.v1.PasswordOAuthFlowB\x02\x18\x01H\x00R\x08password\x12>\n\x0b\x64\x65vice_code\x18\x05 \x01(\x0b\x32\x1b.a2a.v1.DeviceCodeOAuthFlowH\x00R\ndeviceCodeB\x06\n\x04\x66low\"\xbe\x02\n\x1a\x41uthorizationCodeOAuthFlow\x12\x30\n\x11\x61uthorization_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x10\x61uthorizationUrl\x12 \n\ttoken_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12K\n\x06scopes\x18\x04 \x03(\x0b\x32..a2a.v1.AuthorizationCodeOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x12#\n\rpkce_required\x18\x05 \x01(\x08R\x0cpkceRequired\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xe7\x01\n\x1a\x43lientCredentialsOAuthFlow\x12 \n\ttoken_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12K\n\x06scopes\x18\x03 \x03(\x0b\x32..a2a.v1.ClientCredentialsOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xdb\x01\n\x11ImplicitOAuthFlow\x12+\n\x11\x61uthorization_url\x18\x01 \x01(\tR\x10\x61uthorizationUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12=\n\x06scopes\x18\x03 \x03(\x0b\x32%.a2a.v1.ImplicitOAuthFlow.ScopesEntryR\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xcb\x01\n\x11PasswordOAuthFlow\x12\x1b\n\ttoken_url\x18\x01 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12=\n\x06scopes\x18\x03 \x03(\x0b\x32%.a2a.v1.PasswordOAuthFlow.ScopesEntryR\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x98\x02\n\x13\x44\x65viceCodeOAuthFlow\x12=\n\x18\x64\x65vice_authorization_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x16\x64\x65viceAuthorizationUrl\x12 \n\ttoken_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12\x44\n\x06scopes\x18\x04 \x03(\x0b\x32\'.a2a.v1.DeviceCodeOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xd9\x01\n\x12SendMessageRequest\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12.\n\x07message\x18\x01 \x01(\x0b\x32\x0f.a2a.v1.MessageB\x03\xe0\x41\x02R\x07message\x12\x46\n\rconfiguration\x18\x02 \x01(\x0b\x32 .a2a.v1.SendMessageConfigurationR\rconfiguration\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"|\n\x0eGetTaskRequest\x12\x16\n\x06tenant\x18\x03 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12*\n\x0ehistory_length\x18\x02 \x01(\x05H\x00R\rhistoryLength\x88\x01\x01\x42\x11\n\x0f_history_length\"\x9c\x03\n\x10ListTasksRequest\x12\x16\n\x06tenant\x18\t \x01(\tR\x06tenant\x12\x1d\n\ncontext_id\x18\x01 \x01(\tR\tcontextId\x12)\n\x06status\x18\x02 \x01(\x0e\x32\x11.a2a.v1.TaskStateR\x06status\x12 \n\tpage_size\x18\x03 \x01(\x05H\x00R\x08pageSize\x88\x01\x01\x12\x1d\n\npage_token\x18\x04 \x01(\tR\tpageToken\x12*\n\x0ehistory_length\x18\x05 \x01(\x05H\x01R\rhistoryLength\x88\x01\x01\x12P\n\x16status_timestamp_after\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x14statusTimestampAfter\x12\x30\n\x11include_artifacts\x18\x07 \x01(\x08H\x02R\x10includeArtifacts\x88\x01\x01\x42\x0c\n\n_page_sizeB\x11\n\x0f_history_lengthB\x14\n\x12_include_artifacts\"\xaf\x01\n\x11ListTasksResponse\x12\'\n\x05tasks\x18\x01 \x03(\x0b\x32\x0c.a2a.v1.TaskB\x03\xe0\x41\x02R\x05tasks\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x02R\rnextPageToken\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x08pageSize\x12\"\n\ntotal_size\x18\x04 \x01(\x05\x42\x03\xe0\x41\x02R\ttotalSize\"@\n\x11\x43\x61ncelTaskRequest\x12\x16\n\x06tenant\x18\x02 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\"q\n$GetTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x02 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\"t\n\'DeleteTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x02 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\"\xc4\x01\n\'CreateTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12 \n\tconfig_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08\x63onfigId\x12;\n\x06\x63onfig\x18\x05 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigB\x03\xe0\x41\x02R\x06\x63onfigJ\x04\x08\x03\x10\x04\"E\n\x16SubscribeToTaskRequest\x12\x16\n\x06tenant\x18\x02 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\"\x99\x01\n%ListTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x1b\n\tpage_size\x18\x02 \x01(\x05R\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"5\n\x1bGetExtendedAgentCardRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\"q\n\x13SendMessageResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12+\n\x07message\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x07messageB\t\n\x07payload\"\xfe\x01\n\x0eStreamResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12+\n\x07message\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x07message\x12\x44\n\rstatus_update\x18\x03 \x01(\x0b\x32\x1d.a2a.v1.TaskStatusUpdateEventH\x00R\x0cstatusUpdate\x12J\n\x0f\x61rtifact_update\x18\x04 \x01(\x0b\x32\x1f.a2a.v1.TaskArtifactUpdateEventH\x00R\x0e\x61rtifactUpdateB\t\n\x07payload\"\x8e\x01\n&ListTaskPushNotificationConfigResponse\x12<\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\".a2a.v1.TaskPushNotificationConfigR\x07\x63onfigs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken*\xf9\x01\n\tTaskState\x12\x1a\n\x16TASK_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14TASK_STATE_SUBMITTED\x10\x01\x12\x16\n\x12TASK_STATE_WORKING\x10\x02\x12\x18\n\x14TASK_STATE_COMPLETED\x10\x03\x12\x15\n\x11TASK_STATE_FAILED\x10\x04\x12\x17\n\x13TASK_STATE_CANCELED\x10\x05\x12\x1d\n\x19TASK_STATE_INPUT_REQUIRED\x10\x06\x12\x17\n\x13TASK_STATE_REJECTED\x10\x07\x12\x1c\n\x18TASK_STATE_AUTH_REQUIRED\x10\x08*;\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\r\n\tROLE_USER\x10\x01\x12\x0e\n\nROLE_AGENT\x10\x02\x32\xea\x0e\n\nA2AService\x12}\n\x0bSendMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x1b.a2a.v1.SendMessageResponse\"5\x82\xd3\xe4\x93\x02/\"\r/message:send:\x01*Z\x1b\"\x16/{tenant}/message:send:\x01*\x12\x87\x01\n\x14SendStreamingMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x16.a2a.v1.StreamResponse\"9\x82\xd3\xe4\x93\x02\x33\"\x0f/message:stream:\x01*Z\x1d\"\x18/{tenant}/message:stream:\x01*0\x01\x12\x65\n\x07GetTask\x12\x16.a2a.v1.GetTaskRequest\x1a\x0c.a2a.v1.Task\"4\xda\x41\x02id\x82\xd3\xe4\x93\x02)\x12\r/tasks/{id=*}Z\x18\x12\x16/{tenant}/tasks/{id=*}\x12\x63\n\tListTasks\x12\x18.a2a.v1.ListTasksRequest\x1a\x19.a2a.v1.ListTasksResponse\"!\x82\xd3\xe4\x93\x02\x1b\x12\x06/tasksZ\x11\x12\x0f/{tenant}/tasks\x12z\n\nCancelTask\x12\x19.a2a.v1.CancelTaskRequest\x1a\x0c.a2a.v1.Task\"C\x82\xd3\xe4\x93\x02=\"\x14/tasks/{id=*}:cancel:\x01*Z\"\"\x1d/{tenant}/tasks/{id=*}:cancel:\x01*\x12\x90\x01\n\x0fSubscribeToTask\x12\x1e.a2a.v1.SubscribeToTaskRequest\x1a\x16.a2a.v1.StreamResponse\"C\x82\xd3\xe4\x93\x02=\x12\x17/tasks/{id=*}:subscribeZ\"\x12 /{tenant}/tasks/{id=*}:subscribe0\x01\x12\x84\x02\n CreateTaskPushNotificationConfig\x12/.a2a.v1.CreateTaskPushNotificationConfigRequest\x1a\".a2a.v1.TaskPushNotificationConfig\"\x8a\x01\xda\x41\x0etask_id,config\x82\xd3\xe4\x93\x02s\"*/tasks/{task_id=*}/pushNotificationConfigs:\x06\x63onfigZ=\"3/{tenant}/tasks/{task_id=*}/pushNotificationConfigs:\x06\x63onfig\x12\xf8\x01\n\x1dGetTaskPushNotificationConfig\x12,.a2a.v1.GetTaskPushNotificationConfigRequest\x1a\".a2a.v1.TaskPushNotificationConfig\"\x84\x01\xda\x41\ntask_id,id\x82\xd3\xe4\x93\x02q\x12\x31/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<\x12:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}\x12\xf4\x01\n\x1eListTaskPushNotificationConfig\x12-.a2a.v1.ListTaskPushNotificationConfigRequest\x1a..a2a.v1.ListTaskPushNotificationConfigResponse\"s\xda\x41\x07task_id\x82\xd3\xe4\x93\x02\x63\x12*/tasks/{task_id=*}/pushNotificationConfigsZ5\x12\x33/{tenant}/tasks/{task_id=*}/pushNotificationConfigs\x12\x89\x01\n\x14GetExtendedAgentCard\x12#.a2a.v1.GetExtendedAgentCardRequest\x1a\x11.a2a.v1.AgentCard\"9\x82\xd3\xe4\x93\x02\x33\x12\x12/extendedAgentCardZ\x1d\x12\x1b/{tenant}/extendedAgentCard\x12\xf2\x01\n DeleteTaskPushNotificationConfig\x12/.a2a.v1.DeleteTaskPushNotificationConfigRequest\x1a\x16.google.protobuf.Empty\"\x84\x01\xda\x41\ntask_id,id\x82\xd3\xe4\x93\x02q*1/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<*:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Bi\n\ncom.a2a.v1B\x08\x41\x32\x61ProtoP\x01Z\x18google.golang.org/a2a/v1\xa2\x02\x03\x41XX\xaa\x02\x06\x41\x32\x61.V1\xca\x02\x06\x41\x32\x61\\V1\xe2\x02\x12\x41\x32\x61\\V1\\GPBMetadata\xea\x02\x07\x41\x32\x61::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\ta2a.proto\x12\tlf.a2a.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x86\x02\n\x18SendMessageConfiguration\x12\x32\n\x15\x61\x63\x63\x65pted_output_modes\x18\x01 \x03(\tR\x13\x61\x63\x63\x65ptedOutputModes\x12[\n\x18push_notification_config\x18\x02 \x01(\x0b\x32!.lf.a2a.v1.PushNotificationConfigR\x16pushNotificationConfig\x12*\n\x0ehistory_length\x18\x03 \x01(\x05H\x00R\rhistoryLength\x88\x01\x01\x12\x1a\n\x08\x62locking\x18\x04 \x01(\x08R\x08\x62lockingB\x11\n\x0f_history_length\"\x89\x02\n\x04Task\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12\x32\n\x06status\x18\x03 \x01(\x0b\x32\x15.lf.a2a.v1.TaskStatusB\x03\xe0\x41\x02R\x06status\x12\x31\n\tartifacts\x18\x04 \x03(\x0b\x32\x13.lf.a2a.v1.ArtifactR\tartifacts\x12,\n\x07history\x18\x05 \x03(\x0b\x32\x12.lf.a2a.v1.MessageR\x07history\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\xa5\x01\n\nTaskStatus\x12/\n\x05state\x18\x01 \x01(\x0e\x32\x14.lf.a2a.v1.TaskStateB\x03\xe0\x41\x02R\x05state\x12,\n\x07message\x18\x02 \x01(\x0b\x32\x12.lf.a2a.v1.MessageR\x07message\x12\x38\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\"\xed\x01\n\x04Part\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12\x12\n\x03raw\x18\x02 \x01(\x0cH\x00R\x03raw\x12\x12\n\x03url\x18\x03 \x01(\tH\x00R\x03url\x12,\n\x04\x64\x61ta\x18\x04 \x01(\x0b\x32\x16.google.protobuf.ValueH\x00R\x04\x64\x61ta\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1a\n\x08\x66ilename\x18\x06 \x01(\tR\x08\x66ilename\x12\x1d\n\nmedia_type\x18\x07 \x01(\tR\tmediaTypeB\t\n\x07\x63ontent\"\xbe\x02\n\x07Message\x12\"\n\nmessage_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\tmessageId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12\x17\n\x07task_id\x18\x03 \x01(\tR\x06taskId\x12(\n\x04role\x18\x04 \x01(\x0e\x32\x0f.lf.a2a.v1.RoleB\x03\xe0\x41\x02R\x04role\x12*\n\x05parts\x18\x05 \x03(\x0b\x32\x0f.lf.a2a.v1.PartB\x03\xe0\x41\x02R\x05parts\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\x12,\n\x12reference_task_ids\x18\x08 \x03(\tR\x10referenceTaskIds\"\xe7\x01\n\x08\x41rtifact\x12$\n\x0b\x61rtifact_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\nartifactId\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12*\n\x05parts\x18\x04 \x03(\x0b\x32\x0f.lf.a2a.v1.PartB\x03\xe0\x41\x02R\x05parts\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x06 \x03(\tR\nextensions\"\xc2\x01\n\x15TaskStatusUpdateEvent\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12\x32\n\x06status\x18\x03 \x01(\x0b\x32\x15.lf.a2a.v1.TaskStatusB\x03\xe0\x41\x02R\x06status\x12\x33\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\xfd\x01\n\x17TaskArtifactUpdateEvent\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\"\n\ncontext_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tcontextId\x12\x34\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x13.lf.a2a.v1.ArtifactB\x03\xe0\x41\x02R\x08\x61rtifact\x12\x16\n\x06\x61ppend\x18\x04 \x01(\x08R\x06\x61ppend\x12\x1d\n\nlast_chunk\x18\x05 \x01(\x08R\tlastChunk\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\x9c\x01\n\x16PushNotificationConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x03url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x03url\x12\x14\n\x05token\x18\x03 \x01(\tR\x05token\x12\x45\n\x0e\x61uthentication\x18\x04 \x01(\x0b\x32\x1d.lf.a2a.v1.AuthenticationInfoR\x0e\x61uthentication\"S\n\x12\x41uthenticationInfo\x12\x1b\n\x06scheme\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06scheme\x12 \n\x0b\x63redentials\x18\x02 \x01(\tR\x0b\x63redentials\"\x9f\x01\n\x0e\x41gentInterface\x12\x15\n\x03url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x03url\x12.\n\x10protocol_binding\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0fprotocolBinding\x12\x16\n\x06tenant\x18\x03 \x01(\tR\x06tenant\x12.\n\x10protocol_version\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0fprotocolVersion\"\x98\x07\n\tAgentCard\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12Q\n\x14supported_interfaces\x18\x03 \x03(\x0b\x32\x19.lf.a2a.v1.AgentInterfaceB\x03\xe0\x41\x02R\x13supportedInterfaces\x12\x34\n\x08provider\x18\x04 \x01(\x0b\x32\x18.lf.a2a.v1.AgentProviderR\x08provider\x12\x1d\n\x07version\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x07version\x12\x30\n\x11\x64ocumentation_url\x18\x06 \x01(\tH\x00R\x10\x64ocumentationUrl\x88\x01\x01\x12\x45\n\x0c\x63\x61pabilities\x18\x07 \x01(\x0b\x32\x1c.lf.a2a.v1.AgentCapabilitiesB\x03\xe0\x41\x02R\x0c\x63\x61pabilities\x12T\n\x10security_schemes\x18\x08 \x03(\x0b\x32).lf.a2a.v1.AgentCard.SecuritySchemesEntryR\x0fsecuritySchemes\x12S\n\x15security_requirements\x18\t \x03(\x0b\x32\x1e.lf.a2a.v1.SecurityRequirementR\x14securityRequirements\x12\x33\n\x13\x64\x65\x66\x61ult_input_modes\x18\n \x03(\tB\x03\xe0\x41\x02R\x11\x64\x65\x66\x61ultInputModes\x12\x35\n\x14\x64\x65\x66\x61ult_output_modes\x18\x0b \x03(\tB\x03\xe0\x41\x02R\x12\x64\x65\x66\x61ultOutputModes\x12\x32\n\x06skills\x18\x0c \x03(\x0b\x32\x15.lf.a2a.v1.AgentSkillB\x03\xe0\x41\x02R\x06skills\x12=\n\nsignatures\x18\r \x03(\x0b\x32\x1d.lf.a2a.v1.AgentCardSignatureR\nsignatures\x12\x1e\n\x08icon_url\x18\x0e \x01(\tH\x01R\x07iconUrl\x88\x01\x01\x1a]\n\x14SecuritySchemesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12/\n\x05value\x18\x02 \x01(\x0b\x32\x19.lf.a2a.v1.SecuritySchemeR\x05value:\x02\x38\x01\x42\x14\n\x12_documentation_urlB\x0b\n\t_icon_url\"O\n\rAgentProvider\x12\x15\n\x03url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x03url\x12\'\n\x0corganization\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0corganization\"\x97\x02\n\x11\x41gentCapabilities\x12!\n\tstreaming\x18\x01 \x01(\x08H\x00R\tstreaming\x88\x01\x01\x12\x32\n\x12push_notifications\x18\x02 \x01(\x08H\x01R\x11pushNotifications\x88\x01\x01\x12\x39\n\nextensions\x18\x03 \x03(\x0b\x32\x19.lf.a2a.v1.AgentExtensionR\nextensions\x12\x33\n\x13\x65xtended_agent_card\x18\x04 \x01(\x08H\x02R\x11\x65xtendedAgentCard\x88\x01\x01\x42\x0c\n\n_streamingB\x15\n\x13_push_notificationsB\x16\n\x14_extended_agent_card\"\x91\x01\n\x0e\x41gentExtension\x12\x10\n\x03uri\x18\x01 \x01(\tR\x03uri\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x1a\n\x08required\x18\x03 \x01(\x08R\x08required\x12/\n\x06params\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x06params\"\xaf\x02\n\nAgentSkill\x12\x13\n\x02id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\x17\n\x04name\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x0b\x64\x65scription\x12\x17\n\x04tags\x18\x04 \x03(\tB\x03\xe0\x41\x02R\x04tags\x12\x1a\n\x08\x65xamples\x18\x05 \x03(\tR\x08\x65xamples\x12\x1f\n\x0binput_modes\x18\x06 \x03(\tR\ninputModes\x12!\n\x0coutput_modes\x18\x07 \x03(\tR\x0boutputModes\x12S\n\x15security_requirements\x18\x08 \x03(\x0b\x32\x1e.lf.a2a.v1.SecurityRequirementR\x14securityRequirements\"\x8b\x01\n\x12\x41gentCardSignature\x12!\n\tprotected\x18\x01 \x01(\tB\x03\xe0\x41\x02R\tprotected\x12!\n\tsignature\x18\x02 \x01(\tB\x03\xe0\x41\x02R\tsignature\x12/\n\x06header\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x06header\"\xb4\x01\n\x1aTaskPushNotificationConfig\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12`\n\x18push_notification_config\x18\x03 \x01(\x0b\x32!.lf.a2a.v1.PushNotificationConfigB\x03\xe0\x41\x02R\x16pushNotificationConfig\" \n\nStringList\x12\x12\n\x04list\x18\x01 \x03(\tR\x04list\"\xaf\x01\n\x13SecurityRequirement\x12\x45\n\x07schemes\x18\x01 \x03(\x0b\x32+.lf.a2a.v1.SecurityRequirement.SchemesEntryR\x07schemes\x1aQ\n\x0cSchemesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12+\n\x05value\x18\x02 \x01(\x0b\x32\x15.lf.a2a.v1.StringListR\x05value:\x02\x38\x01\"\xf5\x03\n\x0eSecurityScheme\x12X\n\x17\x61pi_key_security_scheme\x18\x01 \x01(\x0b\x32\x1f.lf.a2a.v1.APIKeySecuritySchemeH\x00R\x14\x61piKeySecurityScheme\x12^\n\x19http_auth_security_scheme\x18\x02 \x01(\x0b\x32!.lf.a2a.v1.HTTPAuthSecuritySchemeH\x00R\x16httpAuthSecurityScheme\x12W\n\x16oauth2_security_scheme\x18\x03 \x01(\x0b\x32\x1f.lf.a2a.v1.OAuth2SecuritySchemeH\x00R\x14oauth2SecurityScheme\x12n\n\x1fopen_id_connect_security_scheme\x18\x04 \x01(\x0b\x32&.lf.a2a.v1.OpenIdConnectSecuritySchemeH\x00R\x1bopenIdConnectSecurityScheme\x12V\n\x14mtls_security_scheme\x18\x05 \x01(\x0b\x32\".lf.a2a.v1.MutualTlsSecuritySchemeH\x00R\x12mtlsSecuritySchemeB\x08\n\x06scheme\"r\n\x14\x41PIKeySecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1f\n\x08location\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08location\x12\x17\n\x04name\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x04name\"|\n\x16HTTPAuthSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1b\n\x06scheme\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06scheme\x12#\n\rbearer_format\x18\x03 \x01(\tR\x0c\x62\x65\x61rerFormat\"\x9a\x01\n\x14OAuth2SecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x30\n\x05\x66lows\x18\x02 \x01(\x0b\x32\x15.lf.a2a.v1.OAuthFlowsB\x03\xe0\x41\x02R\x05\x66lows\x12.\n\x13oauth2_metadata_url\x18\x03 \x01(\tR\x11oauth2MetadataUrl\"s\n\x1bOpenIdConnectSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x32\n\x13open_id_connect_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x10openIdConnectUrl\";\n\x17MutualTlsSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\"\x87\x03\n\nOAuthFlows\x12V\n\x12\x61uthorization_code\x18\x01 \x01(\x0b\x32%.lf.a2a.v1.AuthorizationCodeOAuthFlowH\x00R\x11\x61uthorizationCode\x12V\n\x12\x63lient_credentials\x18\x02 \x01(\x0b\x32%.lf.a2a.v1.ClientCredentialsOAuthFlowH\x00R\x11\x63lientCredentials\x12>\n\x08implicit\x18\x03 \x01(\x0b\x32\x1c.lf.a2a.v1.ImplicitOAuthFlowB\x02\x18\x01H\x00R\x08implicit\x12>\n\x08password\x18\x04 \x01(\x0b\x32\x1c.lf.a2a.v1.PasswordOAuthFlowB\x02\x18\x01H\x00R\x08password\x12\x41\n\x0b\x64\x65vice_code\x18\x05 \x01(\x0b\x32\x1e.lf.a2a.v1.DeviceCodeOAuthFlowH\x00R\ndeviceCodeB\x06\n\x04\x66low\"\xc1\x02\n\x1a\x41uthorizationCodeOAuthFlow\x12\x30\n\x11\x61uthorization_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x10\x61uthorizationUrl\x12 \n\ttoken_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12N\n\x06scopes\x18\x04 \x03(\x0b\x32\x31.lf.a2a.v1.AuthorizationCodeOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x12#\n\rpkce_required\x18\x05 \x01(\x08R\x0cpkceRequired\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xea\x01\n\x1a\x43lientCredentialsOAuthFlow\x12 \n\ttoken_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12N\n\x06scopes\x18\x03 \x03(\x0b\x32\x31.lf.a2a.v1.ClientCredentialsOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xde\x01\n\x11ImplicitOAuthFlow\x12+\n\x11\x61uthorization_url\x18\x01 \x01(\tR\x10\x61uthorizationUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12@\n\x06scopes\x18\x03 \x03(\x0b\x32(.lf.a2a.v1.ImplicitOAuthFlow.ScopesEntryR\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xce\x01\n\x11PasswordOAuthFlow\x12\x1b\n\ttoken_url\x18\x01 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12@\n\x06scopes\x18\x03 \x03(\x0b\x32(.lf.a2a.v1.PasswordOAuthFlow.ScopesEntryR\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\x9b\x02\n\x13\x44\x65viceCodeOAuthFlow\x12=\n\x18\x64\x65vice_authorization_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x16\x64\x65viceAuthorizationUrl\x12 \n\ttoken_url\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12G\n\x06scopes\x18\x04 \x03(\x0b\x32*.lf.a2a.v1.DeviceCodeOAuthFlow.ScopesEntryB\x03\xe0\x41\x02R\x06scopes\x1a\x39\n\x0bScopesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xdf\x01\n\x12SendMessageRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x31\n\x07message\x18\x02 \x01(\x0b\x32\x12.lf.a2a.v1.MessageB\x03\xe0\x41\x02R\x07message\x12I\n\rconfiguration\x18\x03 \x01(\x0b\x32#.lf.a2a.v1.SendMessageConfigurationR\rconfiguration\x12\x33\n\x08metadata\x18\x04 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"|\n\x0eGetTaskRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x02id\x12*\n\x0ehistory_length\x18\x03 \x01(\x05H\x00R\rhistoryLength\x88\x01\x01\x42\x11\n\x0f_history_length\"\x9f\x03\n\x10ListTasksRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12,\n\x06status\x18\x03 \x01(\x0e\x32\x14.lf.a2a.v1.TaskStateR\x06status\x12 \n\tpage_size\x18\x04 \x01(\x05H\x00R\x08pageSize\x88\x01\x01\x12\x1d\n\npage_token\x18\x05 \x01(\tR\tpageToken\x12*\n\x0ehistory_length\x18\x06 \x01(\x05H\x01R\rhistoryLength\x88\x01\x01\x12P\n\x16status_timestamp_after\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x14statusTimestampAfter\x12\x30\n\x11include_artifacts\x18\x08 \x01(\x08H\x02R\x10includeArtifacts\x88\x01\x01\x42\x0c\n\n_page_sizeB\x11\n\x0f_history_lengthB\x14\n\x12_include_artifacts\"\xb2\x01\n\x11ListTasksResponse\x12*\n\x05tasks\x18\x01 \x03(\x0b\x32\x0f.lf.a2a.v1.TaskB\x03\xe0\x41\x02R\x05tasks\x12+\n\x0fnext_page_token\x18\x02 \x01(\tB\x03\xe0\x41\x02R\rnextPageToken\x12 \n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x02R\x08pageSize\x12\"\n\ntotal_size\x18\x04 \x01(\x05\x42\x03\xe0\x41\x02R\ttotalSize\"u\n\x11\x43\x61ncelTaskRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x02id\x12\x33\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"q\n$GetTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x13\n\x02id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x02id\"t\n\'DeleteTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x13\n\x02id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x02id\"\x9f\x01\n\'CreateTaskPushNotificationConfigRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12>\n\x06\x63onfig\x18\x03 \x01(\x0b\x32!.lf.a2a.v1.PushNotificationConfigB\x03\xe0\x41\x02R\x06\x63onfig\"E\n\x16SubscribeToTaskRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\x12\x13\n\x02id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x02id\"\x9a\x01\n&ListTaskPushNotificationConfigsRequest\x12\x16\n\x06tenant\x18\x04 \x01(\tR\x06tenant\x12\x1c\n\x07task_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06taskId\x12\x1b\n\tpage_size\x18\x02 \x01(\x05R\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"5\n\x1bGetExtendedAgentCardRequest\x12\x16\n\x06tenant\x18\x01 \x01(\tR\x06tenant\"w\n\x13SendMessageResponse\x12%\n\x04task\x18\x01 \x01(\x0b\x32\x0f.lf.a2a.v1.TaskH\x00R\x04task\x12.\n\x07message\x18\x02 \x01(\x0b\x32\x12.lf.a2a.v1.MessageH\x00R\x07messageB\t\n\x07payload\"\x8a\x02\n\x0eStreamResponse\x12%\n\x04task\x18\x01 \x01(\x0b\x32\x0f.lf.a2a.v1.TaskH\x00R\x04task\x12.\n\x07message\x18\x02 \x01(\x0b\x32\x12.lf.a2a.v1.MessageH\x00R\x07message\x12G\n\rstatus_update\x18\x03 \x01(\x0b\x32 .lf.a2a.v1.TaskStatusUpdateEventH\x00R\x0cstatusUpdate\x12M\n\x0f\x61rtifact_update\x18\x04 \x01(\x0b\x32\".lf.a2a.v1.TaskArtifactUpdateEventH\x00R\x0e\x61rtifactUpdateB\t\n\x07payload\"\x92\x01\n\'ListTaskPushNotificationConfigsResponse\x12?\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32%.lf.a2a.v1.TaskPushNotificationConfigR\x07\x63onfigs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken*\xf9\x01\n\tTaskState\x12\x1a\n\x16TASK_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14TASK_STATE_SUBMITTED\x10\x01\x12\x16\n\x12TASK_STATE_WORKING\x10\x02\x12\x18\n\x14TASK_STATE_COMPLETED\x10\x03\x12\x15\n\x11TASK_STATE_FAILED\x10\x04\x12\x17\n\x13TASK_STATE_CANCELED\x10\x05\x12\x1d\n\x19TASK_STATE_INPUT_REQUIRED\x10\x06\x12\x17\n\x13TASK_STATE_REJECTED\x10\x07\x12\x1c\n\x18TASK_STATE_AUTH_REQUIRED\x10\x08*;\n\x04Role\x12\x14\n\x10ROLE_UNSPECIFIED\x10\x00\x12\r\n\tROLE_USER\x10\x01\x12\x0e\n\nROLE_AGENT\x10\x02\x32\xae\x0f\n\nA2AService\x12\x83\x01\n\x0bSendMessage\x12\x1d.lf.a2a.v1.SendMessageRequest\x1a\x1e.lf.a2a.v1.SendMessageResponse\"5\x82\xd3\xe4\x93\x02/\"\r/message:send:\x01*Z\x1b\"\x16/{tenant}/message:send:\x01*\x12\x8d\x01\n\x14SendStreamingMessage\x12\x1d.lf.a2a.v1.SendMessageRequest\x1a\x19.lf.a2a.v1.StreamResponse\"9\x82\xd3\xe4\x93\x02\x33\"\x0f/message:stream:\x01*Z\x1d\"\x18/{tenant}/message:stream:\x01*0\x01\x12k\n\x07GetTask\x12\x19.lf.a2a.v1.GetTaskRequest\x1a\x0f.lf.a2a.v1.Task\"4\xda\x41\x02id\x82\xd3\xe4\x93\x02)\x12\r/tasks/{id=*}Z\x18\x12\x16/{tenant}/tasks/{id=*}\x12i\n\tListTasks\x12\x1b.lf.a2a.v1.ListTasksRequest\x1a\x1c.lf.a2a.v1.ListTasksResponse\"!\x82\xd3\xe4\x93\x02\x1b\x12\x06/tasksZ\x11\x12\x0f/{tenant}/tasks\x12\x80\x01\n\nCancelTask\x12\x1c.lf.a2a.v1.CancelTaskRequest\x1a\x0f.lf.a2a.v1.Task\"C\x82\xd3\xe4\x93\x02=\"\x14/tasks/{id=*}:cancel:\x01*Z\"\"\x1d/{tenant}/tasks/{id=*}:cancel:\x01*\x12\x96\x01\n\x0fSubscribeToTask\x12!.lf.a2a.v1.SubscribeToTaskRequest\x1a\x19.lf.a2a.v1.StreamResponse\"C\x82\xd3\xe4\x93\x02=\x12\x17/tasks/{id=*}:subscribeZ\"\x12 /{tenant}/tasks/{id=*}:subscribe0\x01\x12\x8a\x02\n CreateTaskPushNotificationConfig\x12\x32.lf.a2a.v1.CreateTaskPushNotificationConfigRequest\x1a%.lf.a2a.v1.TaskPushNotificationConfig\"\x8a\x01\xda\x41\x0etask_id,config\x82\xd3\xe4\x93\x02s\"*/tasks/{task_id=*}/pushNotificationConfigs:\x06\x63onfigZ=\"3/{tenant}/tasks/{task_id=*}/pushNotificationConfigs:\x06\x63onfig\x12\xfe\x01\n\x1dGetTaskPushNotificationConfig\x12/.lf.a2a.v1.GetTaskPushNotificationConfigRequest\x1a%.lf.a2a.v1.TaskPushNotificationConfig\"\x84\x01\xda\x41\ntask_id,id\x82\xd3\xe4\x93\x02q\x12\x31/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<\x12:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}\x12\xfd\x01\n\x1fListTaskPushNotificationConfigs\x12\x31.lf.a2a.v1.ListTaskPushNotificationConfigsRequest\x1a\x32.lf.a2a.v1.ListTaskPushNotificationConfigsResponse\"s\xda\x41\x07task_id\x82\xd3\xe4\x93\x02\x63\x12*/tasks/{task_id=*}/pushNotificationConfigsZ5\x12\x33/{tenant}/tasks/{task_id=*}/pushNotificationConfigs\x12\x8f\x01\n\x14GetExtendedAgentCard\x12&.lf.a2a.v1.GetExtendedAgentCardRequest\x1a\x14.lf.a2a.v1.AgentCard\"9\x82\xd3\xe4\x93\x02\x33\x12\x12/extendedAgentCardZ\x1d\x12\x1b/{tenant}/extendedAgentCard\x12\xf5\x01\n DeleteTaskPushNotificationConfig\x12\x32.lf.a2a.v1.DeleteTaskPushNotificationConfigRequest\x1a\x16.google.protobuf.Empty\"\x84\x01\xda\x41\ntask_id,id\x82\xd3\xe4\x93\x02q*1/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<*:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}B|\n\rcom.lf.a2a.v1B\x08\x41\x32\x61ProtoP\x01Z\x1bgoogle.golang.org/lf/a2a/v1\xa2\x02\x03LAX\xaa\x02\tLf.A2a.V1\xca\x02\tLf\\A2a\\V1\xe2\x02\x15Lf\\A2a\\V1\\GPBMetadata\xea\x02\x0bLf::A2a::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'a2a_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None - _globals['DESCRIPTOR']._serialized_options = b'\n\ncom.a2a.v1B\010A2aProtoP\001Z\030google.golang.org/a2a/v1\242\002\003AXX\252\002\006A2a.V1\312\002\006A2a\\V1\342\002\022A2a\\V1\\GPBMetadata\352\002\007A2a::V1' + _globals['DESCRIPTOR']._serialized_options = b'\n\rcom.lf.a2a.v1B\010A2aProtoP\001Z\033google.golang.org/lf/a2a/v1\242\002\003LAX\252\002\tLf.A2a.V1\312\002\tLf\\A2a\\V1\342\002\025Lf\\A2a\\V1\\GPBMetadata\352\002\013Lf::A2a::V1' _globals['_TASK'].fields_by_name['id']._loaded_options = None _globals['_TASK'].fields_by_name['id']._serialized_options = b'\340A\002' _globals['_TASK'].fields_by_name['context_id']._loaded_options = None @@ -112,8 +112,6 @@ _globals['_AGENTCARDSIGNATURE'].fields_by_name['protected']._serialized_options = b'\340A\002' _globals['_AGENTCARDSIGNATURE'].fields_by_name['signature']._loaded_options = None _globals['_AGENTCARDSIGNATURE'].fields_by_name['signature']._serialized_options = b'\340A\002' - _globals['_TASKPUSHNOTIFICATIONCONFIG'].fields_by_name['id']._loaded_options = None - _globals['_TASKPUSHNOTIFICATIONCONFIG'].fields_by_name['id']._serialized_options = b'\340A\002' _globals['_TASKPUSHNOTIFICATIONCONFIG'].fields_by_name['task_id']._loaded_options = None _globals['_TASKPUSHNOTIFICATIONCONFIG'].fields_by_name['task_id']._serialized_options = b'\340A\002' _globals['_TASKPUSHNOTIFICATIONCONFIG'].fields_by_name['push_notification_config']._loaded_options = None @@ -184,14 +182,12 @@ _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['id']._serialized_options = b'\340A\002' _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['task_id']._loaded_options = None _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['task_id']._serialized_options = b'\340A\002' - _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['config_id']._loaded_options = None - _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['config_id']._serialized_options = b'\340A\002' _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['config']._loaded_options = None _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['config']._serialized_options = b'\340A\002' _globals['_SUBSCRIBETOTASKREQUEST'].fields_by_name['id']._loaded_options = None _globals['_SUBSCRIBETOTASKREQUEST'].fields_by_name['id']._serialized_options = b'\340A\002' - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['task_id']._loaded_options = None - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['task_id']._serialized_options = b'\340A\002' + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSREQUEST'].fields_by_name['task_id']._loaded_options = None + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSREQUEST'].fields_by_name['task_id']._serialized_options = b'\340A\002' _globals['_A2ASERVICE'].methods_by_name['SendMessage']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['SendMessage']._serialized_options = b'\202\323\344\223\002/\"\r/message:send:\001*Z\033\"\026/{tenant}/message:send:\001*' _globals['_A2ASERVICE'].methods_by_name['SendStreamingMessage']._loaded_options = None @@ -208,122 +204,122 @@ _globals['_A2ASERVICE'].methods_by_name['CreateTaskPushNotificationConfig']._serialized_options = b'\332A\016task_id,config\202\323\344\223\002s\"*/tasks/{task_id=*}/pushNotificationConfigs:\006configZ=\"3/{tenant}/tasks/{task_id=*}/pushNotificationConfigs:\006config' _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotificationConfig']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotificationConfig']._serialized_options = b'\332A\ntask_id,id\202\323\344\223\002q\0221/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<\022:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}' - _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfig']._loaded_options = None - _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfig']._serialized_options = b'\332A\007task_id\202\323\344\223\002c\022*/tasks/{task_id=*}/pushNotificationConfigsZ5\0223/{tenant}/tasks/{task_id=*}/pushNotificationConfigs' + _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfigs']._loaded_options = None + _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfigs']._serialized_options = b'\332A\007task_id\202\323\344\223\002c\022*/tasks/{task_id=*}/pushNotificationConfigsZ5\0223/{tenant}/tasks/{task_id=*}/pushNotificationConfigs' _globals['_A2ASERVICE'].methods_by_name['GetExtendedAgentCard']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['GetExtendedAgentCard']._serialized_options = b'\202\323\344\223\0023\022\022/extendedAgentCardZ\035\022\033/{tenant}/extendedAgentCard' _globals['_A2ASERVICE'].methods_by_name['DeleteTaskPushNotificationConfig']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['DeleteTaskPushNotificationConfig']._serialized_options = b'\332A\ntask_id,id\202\323\344\223\002q*1/tasks/{task_id=*}/pushNotificationConfigs/{id=*}Z<*:/{tenant}/tasks/{task_id=*}/pushNotificationConfigs/{id=*}' - _globals['_TASKSTATE']._serialized_start=9766 - _globals['_TASKSTATE']._serialized_end=10015 - _globals['_ROLE']._serialized_start=10017 - _globals['_ROLE']._serialized_end=10076 - _globals['_SENDMESSAGECONFIGURATION']._serialized_start=202 - _globals['_SENDMESSAGECONFIGURATION']._serialized_end=461 - _globals['_TASK']._serialized_start=464 - _globals['_TASK']._serialized_end=720 - _globals['_TASKSTATUS']._serialized_start=723 - _globals['_TASKSTATUS']._serialized_end=882 - _globals['_PART']._serialized_start=885 - _globals['_PART']._serialized_end=1122 - _globals['_MESSAGE']._serialized_start=1125 - _globals['_MESSAGE']._serialized_end=1437 - _globals['_ARTIFACT']._serialized_start=1440 - _globals['_ARTIFACT']._serialized_end=1668 - _globals['_TASKSTATUSUPDATEEVENT']._serialized_start=1671 - _globals['_TASKSTATUSUPDATEEVENT']._serialized_end=1868 - _globals['_TASKARTIFACTUPDATEEVENT']._serialized_start=1871 - _globals['_TASKARTIFACTUPDATEEVENT']._serialized_end=2121 - _globals['_PUSHNOTIFICATIONCONFIG']._serialized_start=2124 - _globals['_PUSHNOTIFICATIONCONFIG']._serialized_end=2277 - _globals['_AUTHENTICATIONINFO']._serialized_start=2279 - _globals['_AUTHENTICATIONINFO']._serialized_end=2362 - _globals['_AGENTINTERFACE']._serialized_start=2365 - _globals['_AGENTINTERFACE']._serialized_end=2524 - _globals['_AGENTCARD']._serialized_start=2527 - _globals['_AGENTCARD']._serialized_end=3453 - _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_start=3298 - _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_end=3388 - _globals['_AGENTPROVIDER']._serialized_start=3455 - _globals['_AGENTPROVIDER']._serialized_end=3534 - _globals['_AGENTCAPABILITIES']._serialized_start=3537 - _globals['_AGENTCAPABILITIES']._serialized_end=3819 - _globals['_AGENTEXTENSION']._serialized_start=3822 - _globals['_AGENTEXTENSION']._serialized_end=3967 - _globals['_AGENTSKILL']._serialized_start=3970 - _globals['_AGENTSKILL']._serialized_end=4270 - _globals['_AGENTCARDSIGNATURE']._serialized_start=4273 - _globals['_AGENTCARDSIGNATURE']._serialized_end=4412 - _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_start=4415 - _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_end=4613 - _globals['_STRINGLIST']._serialized_start=4615 - _globals['_STRINGLIST']._serialized_end=4647 - _globals['_SECURITYREQUIREMENT']._serialized_start=4650 - _globals['_SECURITYREQUIREMENT']._serialized_end=4819 - _globals['_SECURITYREQUIREMENT_SCHEMESENTRY']._serialized_start=4741 - _globals['_SECURITYREQUIREMENT_SCHEMESENTRY']._serialized_end=4819 - _globals['_SECURITYSCHEME']._serialized_start=4822 - _globals['_SECURITYSCHEME']._serialized_end=5308 - _globals['_APIKEYSECURITYSCHEME']._serialized_start=5310 - _globals['_APIKEYSECURITYSCHEME']._serialized_end=5424 - _globals['_HTTPAUTHSECURITYSCHEME']._serialized_start=5426 - _globals['_HTTPAUTHSECURITYSCHEME']._serialized_end=5550 - _globals['_OAUTH2SECURITYSCHEME']._serialized_start=5553 - _globals['_OAUTH2SECURITYSCHEME']._serialized_end=5704 - _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_start=5706 - _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_end=5821 - _globals['_MUTUALTLSSECURITYSCHEME']._serialized_start=5823 - _globals['_MUTUALTLSSECURITYSCHEME']._serialized_end=5882 - _globals['_OAUTHFLOWS']._serialized_start=5885 - _globals['_OAUTHFLOWS']._serialized_end=6261 - _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_start=6264 - _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_end=6582 - _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_start=6525 - _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_end=6582 - _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_start=6585 - _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_end=6816 - _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_start=6525 - _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_end=6582 - _globals['_IMPLICITOAUTHFLOW']._serialized_start=6819 - _globals['_IMPLICITOAUTHFLOW']._serialized_end=7038 - _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_start=6525 - _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_end=6582 - _globals['_PASSWORDOAUTHFLOW']._serialized_start=7041 - _globals['_PASSWORDOAUTHFLOW']._serialized_end=7244 - _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_start=6525 - _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_end=6582 - _globals['_DEVICECODEOAUTHFLOW']._serialized_start=7247 - _globals['_DEVICECODEOAUTHFLOW']._serialized_end=7527 - _globals['_DEVICECODEOAUTHFLOW_SCOPESENTRY']._serialized_start=6525 - _globals['_DEVICECODEOAUTHFLOW_SCOPESENTRY']._serialized_end=6582 - _globals['_SENDMESSAGEREQUEST']._serialized_start=7530 - _globals['_SENDMESSAGEREQUEST']._serialized_end=7747 - _globals['_GETTASKREQUEST']._serialized_start=7749 - _globals['_GETTASKREQUEST']._serialized_end=7873 - _globals['_LISTTASKSREQUEST']._serialized_start=7876 - _globals['_LISTTASKSREQUEST']._serialized_end=8288 - _globals['_LISTTASKSRESPONSE']._serialized_start=8291 - _globals['_LISTTASKSRESPONSE']._serialized_end=8466 - _globals['_CANCELTASKREQUEST']._serialized_start=8468 - _globals['_CANCELTASKREQUEST']._serialized_end=8532 - _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8534 - _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=8647 - _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8649 - _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=8765 - _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8768 - _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=8964 - _globals['_SUBSCRIBETOTASKREQUEST']._serialized_start=8966 - _globals['_SUBSCRIBETOTASKREQUEST']._serialized_end=9035 - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=9038 - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=9191 - _globals['_GETEXTENDEDAGENTCARDREQUEST']._serialized_start=9193 - _globals['_GETEXTENDEDAGENTCARDREQUEST']._serialized_end=9246 - _globals['_SENDMESSAGERESPONSE']._serialized_start=9248 - _globals['_SENDMESSAGERESPONSE']._serialized_end=9361 - _globals['_STREAMRESPONSE']._serialized_start=9364 - _globals['_STREAMRESPONSE']._serialized_end=9618 - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGRESPONSE']._serialized_start=9621 - _globals['_LISTTASKPUSHNOTIFICATIONCONFIGRESPONSE']._serialized_end=9763 - _globals['_A2ASERVICE']._serialized_start=10079 - _globals['_A2ASERVICE']._serialized_end=11977 + _globals['_TASKSTATE']._serialized_start=9880 + _globals['_TASKSTATE']._serialized_end=10129 + _globals['_ROLE']._serialized_start=10131 + _globals['_ROLE']._serialized_end=10190 + _globals['_SENDMESSAGECONFIGURATION']._serialized_start=205 + _globals['_SENDMESSAGECONFIGURATION']._serialized_end=467 + _globals['_TASK']._serialized_start=470 + _globals['_TASK']._serialized_end=735 + _globals['_TASKSTATUS']._serialized_start=738 + _globals['_TASKSTATUS']._serialized_end=903 + _globals['_PART']._serialized_start=906 + _globals['_PART']._serialized_end=1143 + _globals['_MESSAGE']._serialized_start=1146 + _globals['_MESSAGE']._serialized_end=1464 + _globals['_ARTIFACT']._serialized_start=1467 + _globals['_ARTIFACT']._serialized_end=1698 + _globals['_TASKSTATUSUPDATEEVENT']._serialized_start=1701 + _globals['_TASKSTATUSUPDATEEVENT']._serialized_end=1895 + _globals['_TASKARTIFACTUPDATEEVENT']._serialized_start=1898 + _globals['_TASKARTIFACTUPDATEEVENT']._serialized_end=2151 + _globals['_PUSHNOTIFICATIONCONFIG']._serialized_start=2154 + _globals['_PUSHNOTIFICATIONCONFIG']._serialized_end=2310 + _globals['_AUTHENTICATIONINFO']._serialized_start=2312 + _globals['_AUTHENTICATIONINFO']._serialized_end=2395 + _globals['_AGENTINTERFACE']._serialized_start=2398 + _globals['_AGENTINTERFACE']._serialized_end=2557 + _globals['_AGENTCARD']._serialized_start=2560 + _globals['_AGENTCARD']._serialized_end=3480 + _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_start=3352 + _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_end=3445 + _globals['_AGENTPROVIDER']._serialized_start=3482 + _globals['_AGENTPROVIDER']._serialized_end=3561 + _globals['_AGENTCAPABILITIES']._serialized_start=3564 + _globals['_AGENTCAPABILITIES']._serialized_end=3843 + _globals['_AGENTEXTENSION']._serialized_start=3846 + _globals['_AGENTEXTENSION']._serialized_end=3991 + _globals['_AGENTSKILL']._serialized_start=3994 + _globals['_AGENTSKILL']._serialized_end=4297 + _globals['_AGENTCARDSIGNATURE']._serialized_start=4300 + _globals['_AGENTCARDSIGNATURE']._serialized_end=4439 + _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_start=4442 + _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_end=4622 + _globals['_STRINGLIST']._serialized_start=4624 + _globals['_STRINGLIST']._serialized_end=4656 + _globals['_SECURITYREQUIREMENT']._serialized_start=4659 + _globals['_SECURITYREQUIREMENT']._serialized_end=4834 + _globals['_SECURITYREQUIREMENT_SCHEMESENTRY']._serialized_start=4753 + _globals['_SECURITYREQUIREMENT_SCHEMESENTRY']._serialized_end=4834 + _globals['_SECURITYSCHEME']._serialized_start=4837 + _globals['_SECURITYSCHEME']._serialized_end=5338 + _globals['_APIKEYSECURITYSCHEME']._serialized_start=5340 + _globals['_APIKEYSECURITYSCHEME']._serialized_end=5454 + _globals['_HTTPAUTHSECURITYSCHEME']._serialized_start=5456 + _globals['_HTTPAUTHSECURITYSCHEME']._serialized_end=5580 + _globals['_OAUTH2SECURITYSCHEME']._serialized_start=5583 + _globals['_OAUTH2SECURITYSCHEME']._serialized_end=5737 + _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_start=5739 + _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_end=5854 + _globals['_MUTUALTLSSECURITYSCHEME']._serialized_start=5856 + _globals['_MUTUALTLSSECURITYSCHEME']._serialized_end=5915 + _globals['_OAUTHFLOWS']._serialized_start=5918 + _globals['_OAUTHFLOWS']._serialized_end=6309 + _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_start=6312 + _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_end=6633 + _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_start=6576 + _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_end=6633 + _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_start=6636 + _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_end=6870 + _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_start=6576 + _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_end=6633 + _globals['_IMPLICITOAUTHFLOW']._serialized_start=6873 + _globals['_IMPLICITOAUTHFLOW']._serialized_end=7095 + _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_start=6576 + _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_end=6633 + _globals['_PASSWORDOAUTHFLOW']._serialized_start=7098 + _globals['_PASSWORDOAUTHFLOW']._serialized_end=7304 + _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_start=6576 + _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_end=6633 + _globals['_DEVICECODEOAUTHFLOW']._serialized_start=7307 + _globals['_DEVICECODEOAUTHFLOW']._serialized_end=7590 + _globals['_DEVICECODEOAUTHFLOW_SCOPESENTRY']._serialized_start=6576 + _globals['_DEVICECODEOAUTHFLOW_SCOPESENTRY']._serialized_end=6633 + _globals['_SENDMESSAGEREQUEST']._serialized_start=7593 + _globals['_SENDMESSAGEREQUEST']._serialized_end=7816 + _globals['_GETTASKREQUEST']._serialized_start=7818 + _globals['_GETTASKREQUEST']._serialized_end=7942 + _globals['_LISTTASKSREQUEST']._serialized_start=7945 + _globals['_LISTTASKSREQUEST']._serialized_end=8360 + _globals['_LISTTASKSRESPONSE']._serialized_start=8363 + _globals['_LISTTASKSRESPONSE']._serialized_end=8541 + _globals['_CANCELTASKREQUEST']._serialized_start=8543 + _globals['_CANCELTASKREQUEST']._serialized_end=8660 + _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8662 + _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=8775 + _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8777 + _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=8893 + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=8896 + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=9055 + _globals['_SUBSCRIBETOTASKREQUEST']._serialized_start=9057 + _globals['_SUBSCRIBETOTASKREQUEST']._serialized_end=9126 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSREQUEST']._serialized_start=9129 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSREQUEST']._serialized_end=9283 + _globals['_GETEXTENDEDAGENTCARDREQUEST']._serialized_start=9285 + _globals['_GETEXTENDEDAGENTCARDREQUEST']._serialized_end=9338 + _globals['_SENDMESSAGERESPONSE']._serialized_start=9340 + _globals['_SENDMESSAGERESPONSE']._serialized_end=9459 + _globals['_STREAMRESPONSE']._serialized_start=9462 + _globals['_STREAMRESPONSE']._serialized_end=9728 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSRESPONSE']._serialized_start=9731 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGSRESPONSE']._serialized_end=9877 + _globals['_A2ASERVICE']._serialized_start=10193 + _globals['_A2ASERVICE']._serialized_end=12159 # @@protoc_insertion_point(module_scope) diff --git a/src/a2a/types/a2a_pb2.pyi b/src/a2a/types/a2a_pb2.pyi index 8a205b052..dcf2957c3 100644 --- a/src/a2a/types/a2a_pb2.pyi +++ b/src/a2a/types/a2a_pb2.pyi @@ -299,16 +299,14 @@ class AgentCardSignature(_message.Message): def __init__(self, protected: _Optional[str] = ..., signature: _Optional[str] = ..., header: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class TaskPushNotificationConfig(_message.Message): - __slots__ = ("tenant", "id", "task_id", "push_notification_config") + __slots__ = ("tenant", "task_id", "push_notification_config") TENANT_FIELD_NUMBER: _ClassVar[int] - ID_FIELD_NUMBER: _ClassVar[int] TASK_ID_FIELD_NUMBER: _ClassVar[int] PUSH_NOTIFICATION_CONFIG_FIELD_NUMBER: _ClassVar[int] tenant: str - id: str task_id: str push_notification_config: PushNotificationConfig - def __init__(self, tenant: _Optional[str] = ..., id: _Optional[str] = ..., task_id: _Optional[str] = ..., push_notification_config: _Optional[_Union[PushNotificationConfig, _Mapping]] = ...) -> None: ... + def __init__(self, tenant: _Optional[str] = ..., task_id: _Optional[str] = ..., push_notification_config: _Optional[_Union[PushNotificationConfig, _Mapping]] = ...) -> None: ... class StringList(_message.Message): __slots__ = ("list",) @@ -547,12 +545,14 @@ class ListTasksResponse(_message.Message): def __init__(self, tasks: _Optional[_Iterable[_Union[Task, _Mapping]]] = ..., next_page_token: _Optional[str] = ..., page_size: _Optional[int] = ..., total_size: _Optional[int] = ...) -> None: ... class CancelTaskRequest(_message.Message): - __slots__ = ("tenant", "id") + __slots__ = ("tenant", "id", "metadata") TENANT_FIELD_NUMBER: _ClassVar[int] ID_FIELD_NUMBER: _ClassVar[int] + METADATA_FIELD_NUMBER: _ClassVar[int] tenant: str id: str - def __init__(self, tenant: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... + metadata: _struct_pb2.Struct + def __init__(self, tenant: _Optional[str] = ..., id: _Optional[str] = ..., metadata: _Optional[_Union[_struct_pb2.Struct, _Mapping]] = ...) -> None: ... class GetTaskPushNotificationConfigRequest(_message.Message): __slots__ = ("tenant", "task_id", "id") @@ -575,16 +575,14 @@ class DeleteTaskPushNotificationConfigRequest(_message.Message): def __init__(self, tenant: _Optional[str] = ..., task_id: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... class CreateTaskPushNotificationConfigRequest(_message.Message): - __slots__ = ("tenant", "task_id", "config_id", "config") + __slots__ = ("tenant", "task_id", "config") TENANT_FIELD_NUMBER: _ClassVar[int] TASK_ID_FIELD_NUMBER: _ClassVar[int] - CONFIG_ID_FIELD_NUMBER: _ClassVar[int] CONFIG_FIELD_NUMBER: _ClassVar[int] tenant: str task_id: str - config_id: str config: PushNotificationConfig - def __init__(self, tenant: _Optional[str] = ..., task_id: _Optional[str] = ..., config_id: _Optional[str] = ..., config: _Optional[_Union[PushNotificationConfig, _Mapping]] = ...) -> None: ... + def __init__(self, tenant: _Optional[str] = ..., task_id: _Optional[str] = ..., config: _Optional[_Union[PushNotificationConfig, _Mapping]] = ...) -> None: ... class SubscribeToTaskRequest(_message.Message): __slots__ = ("tenant", "id") @@ -594,7 +592,7 @@ class SubscribeToTaskRequest(_message.Message): id: str def __init__(self, tenant: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ... -class ListTaskPushNotificationConfigRequest(_message.Message): +class ListTaskPushNotificationConfigsRequest(_message.Message): __slots__ = ("tenant", "task_id", "page_size", "page_token") TENANT_FIELD_NUMBER: _ClassVar[int] TASK_ID_FIELD_NUMBER: _ClassVar[int] @@ -632,7 +630,7 @@ class StreamResponse(_message.Message): artifact_update: TaskArtifactUpdateEvent def __init__(self, task: _Optional[_Union[Task, _Mapping]] = ..., message: _Optional[_Union[Message, _Mapping]] = ..., status_update: _Optional[_Union[TaskStatusUpdateEvent, _Mapping]] = ..., artifact_update: _Optional[_Union[TaskArtifactUpdateEvent, _Mapping]] = ...) -> None: ... -class ListTaskPushNotificationConfigResponse(_message.Message): +class ListTaskPushNotificationConfigsResponse(_message.Message): __slots__ = ("configs", "next_page_token") CONFIGS_FIELD_NUMBER: _ClassVar[int] NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] diff --git a/src/a2a/types/a2a_pb2_grpc.py b/src/a2a/types/a2a_pb2_grpc.py index 9c625d011..e928bef85 100644 --- a/src/a2a/types/a2a_pb2_grpc.py +++ b/src/a2a/types/a2a_pb2_grpc.py @@ -7,7 +7,7 @@ class A2AServiceStub(object): - """A2AService defines the operations of the A2A protocol. + """Provides operations for interacting with agents using the A2A protocol. """ def __init__(self, channel): @@ -17,124 +17,128 @@ def __init__(self, channel): channel: A grpc.Channel. """ self.SendMessage = channel.unary_unary( - '/a2a.v1.A2AService/SendMessage', + '/lf.a2a.v1.A2AService/SendMessage', request_serializer=a2a__pb2.SendMessageRequest.SerializeToString, response_deserializer=a2a__pb2.SendMessageResponse.FromString, _registered_method=True) self.SendStreamingMessage = channel.unary_stream( - '/a2a.v1.A2AService/SendStreamingMessage', + '/lf.a2a.v1.A2AService/SendStreamingMessage', request_serializer=a2a__pb2.SendMessageRequest.SerializeToString, response_deserializer=a2a__pb2.StreamResponse.FromString, _registered_method=True) self.GetTask = channel.unary_unary( - '/a2a.v1.A2AService/GetTask', + '/lf.a2a.v1.A2AService/GetTask', request_serializer=a2a__pb2.GetTaskRequest.SerializeToString, response_deserializer=a2a__pb2.Task.FromString, _registered_method=True) self.ListTasks = channel.unary_unary( - '/a2a.v1.A2AService/ListTasks', + '/lf.a2a.v1.A2AService/ListTasks', request_serializer=a2a__pb2.ListTasksRequest.SerializeToString, response_deserializer=a2a__pb2.ListTasksResponse.FromString, _registered_method=True) self.CancelTask = channel.unary_unary( - '/a2a.v1.A2AService/CancelTask', + '/lf.a2a.v1.A2AService/CancelTask', request_serializer=a2a__pb2.CancelTaskRequest.SerializeToString, response_deserializer=a2a__pb2.Task.FromString, _registered_method=True) self.SubscribeToTask = channel.unary_stream( - '/a2a.v1.A2AService/SubscribeToTask', + '/lf.a2a.v1.A2AService/SubscribeToTask', request_serializer=a2a__pb2.SubscribeToTaskRequest.SerializeToString, response_deserializer=a2a__pb2.StreamResponse.FromString, _registered_method=True) self.CreateTaskPushNotificationConfig = channel.unary_unary( - '/a2a.v1.A2AService/CreateTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/CreateTaskPushNotificationConfig', request_serializer=a2a__pb2.CreateTaskPushNotificationConfigRequest.SerializeToString, response_deserializer=a2a__pb2.TaskPushNotificationConfig.FromString, _registered_method=True) self.GetTaskPushNotificationConfig = channel.unary_unary( - '/a2a.v1.A2AService/GetTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/GetTaskPushNotificationConfig', request_serializer=a2a__pb2.GetTaskPushNotificationConfigRequest.SerializeToString, response_deserializer=a2a__pb2.TaskPushNotificationConfig.FromString, _registered_method=True) - self.ListTaskPushNotificationConfig = channel.unary_unary( - '/a2a.v1.A2AService/ListTaskPushNotificationConfig', - request_serializer=a2a__pb2.ListTaskPushNotificationConfigRequest.SerializeToString, - response_deserializer=a2a__pb2.ListTaskPushNotificationConfigResponse.FromString, + self.ListTaskPushNotificationConfigs = channel.unary_unary( + '/lf.a2a.v1.A2AService/ListTaskPushNotificationConfigs', + request_serializer=a2a__pb2.ListTaskPushNotificationConfigsRequest.SerializeToString, + response_deserializer=a2a__pb2.ListTaskPushNotificationConfigsResponse.FromString, _registered_method=True) self.GetExtendedAgentCard = channel.unary_unary( - '/a2a.v1.A2AService/GetExtendedAgentCard', + '/lf.a2a.v1.A2AService/GetExtendedAgentCard', request_serializer=a2a__pb2.GetExtendedAgentCardRequest.SerializeToString, response_deserializer=a2a__pb2.AgentCard.FromString, _registered_method=True) self.DeleteTaskPushNotificationConfig = channel.unary_unary( - '/a2a.v1.A2AService/DeleteTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/DeleteTaskPushNotificationConfig', request_serializer=a2a__pb2.DeleteTaskPushNotificationConfigRequest.SerializeToString, response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString, _registered_method=True) class A2AServiceServicer(object): - """A2AService defines the operations of the A2A protocol. + """Provides operations for interacting with agents using the A2A protocol. """ def SendMessage(self, request, context): - """Send a message to the agent. + """Sends a message to an agent. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def SendStreamingMessage(self, request, context): - """SendStreamingMessage is a streaming version of SendMessage. + """Sends a streaming message to an agent, allowing for real-time interaction and status updates. + Streaming version of `SendMessage` """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def GetTask(self, request, context): - """Get the current state of a task from the agent. + """Gets the latest state of a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def ListTasks(self, request, context): - """List tasks with optional filtering and pagination. + """Lists tasks that match the specified filter. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def CancelTask(self, request, context): - """Cancel a task. + """Cancels a task in progress. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def SubscribeToTask(self, request, context): - """SubscribeToTask allows subscribing to task updates for tasks not in terminal state. - Returns UnsupportedOperationError if task is in terminal state (completed, failed, canceled, rejected). + """Subscribes to task updates for tasks not in a terminal state. + Returns `UnsupportedOperationError` if the task is already in a terminal state (completed, failed, canceled, rejected). """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def CreateTaskPushNotificationConfig(self, request, context): - """Create a push notification config for a task. + """(-- api-linter: client-libraries::4232::required-fields=disabled + api-linter: core::0133::method-signature=disabled + aip.dev/not-precedent: method_signature preserved for backwards compatibility --) + Creates a push notification config for a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def GetTaskPushNotificationConfig(self, request, context): - """Get a push notification config for a task. + """Gets a push notification config for a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def ListTaskPushNotificationConfig(self, request, context): + def ListTaskPushNotificationConfigs(self, request, context): """Get a list of push notifications configured for a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -142,14 +146,14 @@ def ListTaskPushNotificationConfig(self, request, context): raise NotImplementedError('Method not implemented!') def GetExtendedAgentCard(self, request, context): - """GetExtendedAgentCard returns the extended agent card for authenticated agents. + """Gets the extended agent card for the authenticated agent. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def DeleteTaskPushNotificationConfig(self, request, context): - """Delete a push notification config for a task. + """Deletes a push notification config for a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -198,10 +202,10 @@ def add_A2AServiceServicer_to_server(servicer, server): request_deserializer=a2a__pb2.GetTaskPushNotificationConfigRequest.FromString, response_serializer=a2a__pb2.TaskPushNotificationConfig.SerializeToString, ), - 'ListTaskPushNotificationConfig': grpc.unary_unary_rpc_method_handler( - servicer.ListTaskPushNotificationConfig, - request_deserializer=a2a__pb2.ListTaskPushNotificationConfigRequest.FromString, - response_serializer=a2a__pb2.ListTaskPushNotificationConfigResponse.SerializeToString, + 'ListTaskPushNotificationConfigs': grpc.unary_unary_rpc_method_handler( + servicer.ListTaskPushNotificationConfigs, + request_deserializer=a2a__pb2.ListTaskPushNotificationConfigsRequest.FromString, + response_serializer=a2a__pb2.ListTaskPushNotificationConfigsResponse.SerializeToString, ), 'GetExtendedAgentCard': grpc.unary_unary_rpc_method_handler( servicer.GetExtendedAgentCard, @@ -215,14 +219,14 @@ def add_A2AServiceServicer_to_server(servicer, server): ), } generic_handler = grpc.method_handlers_generic_handler( - 'a2a.v1.A2AService', rpc_method_handlers) + 'lf.a2a.v1.A2AService', rpc_method_handlers) server.add_generic_rpc_handlers((generic_handler,)) - server.add_registered_method_handlers('a2a.v1.A2AService', rpc_method_handlers) + server.add_registered_method_handlers('lf.a2a.v1.A2AService', rpc_method_handlers) # This class is part of an EXPERIMENTAL API. class A2AService(object): - """A2AService defines the operations of the A2A protocol. + """Provides operations for interacting with agents using the A2A protocol. """ @staticmethod @@ -239,7 +243,7 @@ def SendMessage(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/SendMessage', + '/lf.a2a.v1.A2AService/SendMessage', a2a__pb2.SendMessageRequest.SerializeToString, a2a__pb2.SendMessageResponse.FromString, options, @@ -266,7 +270,7 @@ def SendStreamingMessage(request, return grpc.experimental.unary_stream( request, target, - '/a2a.v1.A2AService/SendStreamingMessage', + '/lf.a2a.v1.A2AService/SendStreamingMessage', a2a__pb2.SendMessageRequest.SerializeToString, a2a__pb2.StreamResponse.FromString, options, @@ -293,7 +297,7 @@ def GetTask(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/GetTask', + '/lf.a2a.v1.A2AService/GetTask', a2a__pb2.GetTaskRequest.SerializeToString, a2a__pb2.Task.FromString, options, @@ -320,7 +324,7 @@ def ListTasks(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/ListTasks', + '/lf.a2a.v1.A2AService/ListTasks', a2a__pb2.ListTasksRequest.SerializeToString, a2a__pb2.ListTasksResponse.FromString, options, @@ -347,7 +351,7 @@ def CancelTask(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/CancelTask', + '/lf.a2a.v1.A2AService/CancelTask', a2a__pb2.CancelTaskRequest.SerializeToString, a2a__pb2.Task.FromString, options, @@ -374,7 +378,7 @@ def SubscribeToTask(request, return grpc.experimental.unary_stream( request, target, - '/a2a.v1.A2AService/SubscribeToTask', + '/lf.a2a.v1.A2AService/SubscribeToTask', a2a__pb2.SubscribeToTaskRequest.SerializeToString, a2a__pb2.StreamResponse.FromString, options, @@ -401,7 +405,7 @@ def CreateTaskPushNotificationConfig(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/CreateTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/CreateTaskPushNotificationConfig', a2a__pb2.CreateTaskPushNotificationConfigRequest.SerializeToString, a2a__pb2.TaskPushNotificationConfig.FromString, options, @@ -428,7 +432,7 @@ def GetTaskPushNotificationConfig(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/GetTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/GetTaskPushNotificationConfig', a2a__pb2.GetTaskPushNotificationConfigRequest.SerializeToString, a2a__pb2.TaskPushNotificationConfig.FromString, options, @@ -442,7 +446,7 @@ def GetTaskPushNotificationConfig(request, _registered_method=True) @staticmethod - def ListTaskPushNotificationConfig(request, + def ListTaskPushNotificationConfigs(request, target, options=(), channel_credentials=None, @@ -455,9 +459,9 @@ def ListTaskPushNotificationConfig(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/ListTaskPushNotificationConfig', - a2a__pb2.ListTaskPushNotificationConfigRequest.SerializeToString, - a2a__pb2.ListTaskPushNotificationConfigResponse.FromString, + '/lf.a2a.v1.A2AService/ListTaskPushNotificationConfigs', + a2a__pb2.ListTaskPushNotificationConfigsRequest.SerializeToString, + a2a__pb2.ListTaskPushNotificationConfigsResponse.FromString, options, channel_credentials, insecure, @@ -482,7 +486,7 @@ def GetExtendedAgentCard(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/GetExtendedAgentCard', + '/lf.a2a.v1.A2AService/GetExtendedAgentCard', a2a__pb2.GetExtendedAgentCardRequest.SerializeToString, a2a__pb2.AgentCard.FromString, options, @@ -509,7 +513,7 @@ def DeleteTaskPushNotificationConfig(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/DeleteTaskPushNotificationConfig', + '/lf.a2a.v1.A2AService/DeleteTaskPushNotificationConfig', a2a__pb2.DeleteTaskPushNotificationConfigRequest.SerializeToString, google_dot_protobuf_dot_empty__pb2.Empty.FromString, options, diff --git a/tests/client/transports/test_grpc_client.py b/tests/client/transports/test_grpc_client.py index 9632a335f..7174d0e47 100644 --- a/tests/client/transports/test_grpc_client.py +++ b/tests/client/transports/test_grpc_client.py @@ -189,7 +189,6 @@ def sample_task_push_notification_config( """Provides a sample TaskPushNotificationConfig object.""" return TaskPushNotificationConfig( task_id='task-1', - id=sample_push_notification_config.id, push_notification_config=sample_push_notification_config, ) @@ -427,7 +426,6 @@ async def test_set_task_callback_with_valid_task( # Create the request object expected by the transport request = CreateTaskPushNotificationConfigRequest( task_id='task-1', - config_id=sample_task_push_notification_config.push_notification_config.id, config=sample_task_push_notification_config.push_notification_config, ) response = await grpc_transport.set_task_callback(request) @@ -455,14 +453,12 @@ async def test_set_task_callback_with_invalid_task( mock_grpc_stub.CreateTaskPushNotificationConfig.return_value = ( a2a_pb2.TaskPushNotificationConfig( task_id='invalid-path-to-task-1', - id='config-1', push_notification_config=sample_push_notification_config, ) ) request = CreateTaskPushNotificationConfigRequest( task_id='task-1', - config_id='config-1', config=sample_push_notification_config, ) @@ -516,7 +512,6 @@ async def test_get_task_callback_with_invalid_task( mock_grpc_stub.GetTaskPushNotificationConfig.return_value = ( a2a_pb2.TaskPushNotificationConfig( task_id='invalid-path-to-task-1', - id='config-1', push_notification_config=sample_push_notification_config, ) ) diff --git a/tests/client/transports/test_jsonrpc_client.py b/tests/client/transports/test_jsonrpc_client.py index f14ab9fa3..6480b0f26 100644 --- a/tests/client/transports/test_jsonrpc_client.py +++ b/tests/client/transports/test_jsonrpc_client.py @@ -358,7 +358,6 @@ async def test_get_task_callback_success( 'id': '1', 'result': { 'task_id': f'{task_id}', - 'id': 'config-1', }, } mock_response.raise_for_status = MagicMock() diff --git a/tests/e2e/push_notifications/test_default_push_notification_support.py b/tests/e2e/push_notifications/test_default_push_notification_support.py index c39de8cbf..b185f176a 100644 --- a/tests/e2e/push_notifications/test_default_push_notification_support.py +++ b/tests/e2e/push_notifications/test_default_push_notification_support.py @@ -192,7 +192,6 @@ async def test_notification_triggering_after_config_change_e2e( await a2a_client.set_task_callback( CreateTaskPushNotificationConfigRequest( task_id=f'{task.id}', - config_id='after-config-change', config=PushNotificationConfig( id='after-config-change', url=f'{notifications_server}/notifications', diff --git a/tests/integration/test_client_server_integration.py b/tests/integration/test_client_server_integration.py index 3299af1d6..bae7b8c13 100644 --- a/tests/integration/test_client_server_integration.py +++ b/tests/integration/test_client_server_integration.py @@ -81,7 +81,6 @@ CALLBACK_CONFIG = TaskPushNotificationConfig( task_id='task-callback-123', - id='pnc-abc', push_notification_config=PushNotificationConfig( id='pnc-abc', url='http://callback.example.com', token='' ), @@ -584,13 +583,15 @@ async def test_http_transport_set_task_callback( # Create CreateTaskPushNotificationConfigRequest with required fields params = CreateTaskPushNotificationConfigRequest( task_id='task-callback-123', - config_id='pnc-abc', config=CALLBACK_CONFIG.push_notification_config, ) result = await transport.set_task_callback(request=params) - # TaskPushNotificationConfig has 'name' and 'push_notification_config' - assert result.id == CALLBACK_CONFIG.id + # TaskPushNotificationConfig has 'push_notification_config' + assert ( + result.push_notification_config.id + == CALLBACK_CONFIG.push_notification_config.id + ) assert ( result.push_notification_config.id == CALLBACK_CONFIG.push_notification_config.id @@ -621,13 +622,15 @@ def channel_factory(address: str) -> Channel: # Create CreateTaskPushNotificationConfigRequest with required fields params = CreateTaskPushNotificationConfigRequest( task_id='task-callback-123', - config_id='pnc-abc', config=CALLBACK_CONFIG.push_notification_config, ) result = await transport.set_task_callback(request=params) - # TaskPushNotificationConfig has 'name' and 'push_notification_config' - assert result.id == CALLBACK_CONFIG.id + # TaskPushNotificationConfig has 'push_notification_config' + assert ( + result.push_notification_config.id + == CALLBACK_CONFIG.push_notification_config.id + ) assert ( result.push_notification_config.id == CALLBACK_CONFIG.push_notification_config.id @@ -660,7 +663,8 @@ async def test_http_transport_get_task_callback( # Use GetTaskPushNotificationConfigRequest with name field (resource name) params = GetTaskPushNotificationConfigRequest( - task_id=f'{CALLBACK_CONFIG.task_id}', id=CALLBACK_CONFIG.id + task_id=f'{CALLBACK_CONFIG.task_id}', + id=CALLBACK_CONFIG.push_notification_config.id, ) result = await transport.get_task_callback(request=params) @@ -695,7 +699,8 @@ def channel_factory(address: str) -> Channel: # Use GetTaskPushNotificationConfigRequest with name field (resource name) params = GetTaskPushNotificationConfigRequest( - task_id=f'{CALLBACK_CONFIG.task_id}', id=CALLBACK_CONFIG.id + task_id=f'{CALLBACK_CONFIG.task_id}', + id=CALLBACK_CONFIG.push_notification_config.id, ) result = await transport.get_task_callback(request=params) diff --git a/tests/server/request_handlers/test_default_request_handler.py b/tests/server/request_handlers/test_default_request_handler.py index 71ea6b2c6..9a00ba6c6 100644 --- a/tests/server/request_handlers/test_default_request_handler.py +++ b/tests/server/request_handlers/test_default_request_handler.py @@ -44,7 +44,7 @@ GetTaskRequest, ListTasksRequest, ListTasksResponse, - ListTaskPushNotificationConfigRequest, + ListTaskPushNotificationConfigsRequest, Message, Part, PushNotificationConfig, @@ -1962,7 +1962,6 @@ async def test_set_task_push_notification_config_no_notifier(): ) params = CreateTaskPushNotificationConfigRequest( task_id='task1', - config_id='config1', config=PushNotificationConfig(url='http://example.com'), ) from a2a.utils.errors import ServerError # Local import @@ -1990,7 +1989,6 @@ async def test_set_task_push_notification_config_task_not_found(): ) params = CreateTaskPushNotificationConfigRequest( task_id='non_existent_task', - config_id='config1', config=PushNotificationConfig(url='http://example.com'), ) from a2a.utils.errors import ServerError # Local import @@ -2105,7 +2103,6 @@ async def test_get_task_push_notification_config_info_with_config(): set_config_params = CreateTaskPushNotificationConfigRequest( task_id='task_1', - config_id='config_id', config=PushNotificationConfig( id='config_id', url='http://1.example.com' ), @@ -2147,7 +2144,6 @@ async def test_get_task_push_notification_config_info_with_config_no_id(): set_config_params = CreateTaskPushNotificationConfigRequest( task_id='task_1', - config_id='default', config=PushNotificationConfig(url='http://1.example.com'), ) await request_handler.on_create_task_push_notification_config( @@ -2271,11 +2267,11 @@ async def test_list_task_push_notification_config_no_store(): task_store=AsyncMock(spec=TaskStore), push_config_store=None, # Explicitly None ) - params = ListTaskPushNotificationConfigRequest(task_id='task1') + params = ListTaskPushNotificationConfigsRequest(task_id='task1') from a2a.utils.errors import ServerError # Local import with pytest.raises(ServerError) as exc_info: - await request_handler.on_list_task_push_notification_config( + await request_handler.on_list_task_push_notification_configs( params, create_server_call_context() ) assert isinstance(exc_info.value.error, UnsupportedOperationError) @@ -2293,12 +2289,12 @@ async def test_list_task_push_notification_config_task_not_found(): task_store=mock_task_store, push_config_store=mock_push_store, ) - params = ListTaskPushNotificationConfigRequest(task_id='non_existent_task') + params = ListTaskPushNotificationConfigsRequest(task_id='non_existent_task') from a2a.utils.errors import ServerError # Local import context = create_server_call_context() with pytest.raises(ServerError) as exc_info: - await request_handler.on_list_task_push_notification_config( + await request_handler.on_list_task_push_notification_configs( params, context ) @@ -2322,9 +2318,9 @@ async def test_list_no_task_push_notification_config_info(): task_store=mock_task_store, push_config_store=push_store, ) - params = ListTaskPushNotificationConfigRequest(task_id='non_existent_task') + params = ListTaskPushNotificationConfigsRequest(task_id='non_existent_task') - result = await request_handler.on_list_task_push_notification_config( + result = await request_handler.on_list_task_push_notification_configs( params, create_server_call_context() ) assert result.configs == [] @@ -2354,9 +2350,9 @@ async def test_list_task_push_notification_config_info_with_config(): task_store=mock_task_store, push_config_store=push_store, ) - params = ListTaskPushNotificationConfigRequest(task_id='task_1') + params = ListTaskPushNotificationConfigsRequest(task_id='task_1') - result = await request_handler.on_list_task_push_notification_config( + result = await request_handler.on_list_task_push_notification_configs( params, create_server_call_context() ) @@ -2384,7 +2380,6 @@ async def test_list_task_push_notification_config_info_with_config_and_no_id(): # multiple calls without config id should replace the existing set_config_params1 = CreateTaskPushNotificationConfigRequest( task_id='task_1', - config_id='default', config=PushNotificationConfig(url='http://1.example.com'), ) await request_handler.on_create_task_push_notification_config( @@ -2393,16 +2388,15 @@ async def test_list_task_push_notification_config_info_with_config_and_no_id(): set_config_params2 = CreateTaskPushNotificationConfigRequest( task_id='task_1', - config_id='default', config=PushNotificationConfig(url='http://2.example.com'), ) await request_handler.on_create_task_push_notification_config( set_config_params2, create_server_call_context() ) - params = ListTaskPushNotificationConfigRequest(task_id='task_1') + params = ListTaskPushNotificationConfigsRequest(task_id='task_1') - result = await request_handler.on_list_task_push_notification_config( + result = await request_handler.on_list_task_push_notification_configs( params, create_server_call_context() ) @@ -2536,8 +2530,8 @@ async def test_delete_task_push_notification_config_info_with_config(): assert result1 is None - result2 = await request_handler.on_list_task_push_notification_config( - ListTaskPushNotificationConfigRequest(task_id='task_1'), + result2 = await request_handler.on_list_task_push_notification_configs( + ListTaskPushNotificationConfigsRequest(task_id='task_1'), create_server_call_context(), ) @@ -2576,8 +2570,8 @@ async def test_delete_task_push_notification_config_info_with_config_and_no_id() assert result is None - result2 = await request_handler.on_list_task_push_notification_config( - ListTaskPushNotificationConfigRequest(task_id='task_1'), + result2 = await request_handler.on_list_task_push_notification_configs( + ListTaskPushNotificationConfigsRequest(task_id='task_1'), create_server_call_context(), ) diff --git a/tests/server/request_handlers/test_jsonrpc_handler.py b/tests/server/request_handlers/test_jsonrpc_handler.py index b5a5a07ad..fca1175af 100644 --- a/tests/server/request_handlers/test_jsonrpc_handler.py +++ b/tests/server/request_handlers/test_jsonrpc_handler.py @@ -39,8 +39,8 @@ GetExtendedAgentCardRequest, GetTaskPushNotificationConfigRequest, GetTaskRequest, - ListTaskPushNotificationConfigRequest, - ListTaskPushNotificationConfigResponse, + ListTaskPushNotificationConfigsRequest, + ListTaskPushNotificationConfigsResponse, ListTasksResponse, Message, Part, @@ -548,7 +548,6 @@ async def test_set_push_notification_success(self) -> None: push_config = PushNotificationConfig(url='http://example.com') request = CreateTaskPushNotificationConfigRequest( task_id=mock_task.id, - config_id='default', config=push_config, ) response = await handler.set_push_notification_config(request) @@ -579,7 +578,6 @@ async def test_get_push_notification_success(self) -> None: # Set up the config first request = CreateTaskPushNotificationConfigRequest( task_id=mock_task.id, - config_id='default', config=push_config, ) await handler.set_push_notification_config(request) @@ -774,7 +772,6 @@ async def test_push_notifications_not_supported_error(self) -> None: push_config = PushNotificationConfig(url='http://example.com') request = CreateTaskPushNotificationConfigRequest( task_id='task_123', - config_id='default', config=push_config, ) @@ -837,7 +834,6 @@ async def test_on_set_push_notification_no_push_config_store(self) -> None: push_config = PushNotificationConfig(url='http://example.com') request = CreateTaskPushNotificationConfigRequest( task_id=mock_task.id, - config_id='default', config=push_config, ) response = await handler.set_push_notification_config(request) @@ -1052,7 +1048,6 @@ async def test_on_get_push_notification(self) -> None: request_handler = AsyncMock(spec=DefaultRequestHandler) task_push_config = TaskPushNotificationConfig( task_id=mock_task.id, - id='config1', push_notification_config=PushNotificationConfig( id='config1', url='http://example.com' ), @@ -1075,7 +1070,7 @@ async def test_on_get_push_notification(self) -> None: self.assertTrue(is_success_response(response)) # Result is converted to dict for JSON serialization self.assertEqual( - response['result']['id'], + response['result']['pushNotificationConfig']['id'], 'config1', ) self.assertEqual( @@ -1094,23 +1089,23 @@ async def test_on_list_push_notification(self) -> None: request_handler = AsyncMock(spec=DefaultRequestHandler) task_push_config = TaskPushNotificationConfig( task_id=mock_task.id, - id='default', push_notification_config=PushNotificationConfig( - url='http://example.com' + id='default', + url='http://example.com', ), ) - request_handler.on_list_task_push_notification_config.return_value = ( - ListTaskPushNotificationConfigResponse(configs=[task_push_config]) + request_handler.on_list_task_push_notification_configs.return_value = ( + ListTaskPushNotificationConfigsResponse(configs=[task_push_config]) ) self.mock_agent_card.capabilities = AgentCapabilities( push_notifications=True ) handler = JSONRPCHandler(self.mock_agent_card, request_handler) - list_request = ListTaskPushNotificationConfigRequest( + list_request = ListTaskPushNotificationConfigsRequest( task_id=mock_task.id, ) - response = await handler.list_push_notification_config(list_request) + response = await handler.list_push_notification_configs(list_request) # Assert self.assertIsInstance(response, dict) self.assertTrue(is_success_response(response)) @@ -1127,7 +1122,7 @@ async def test_on_list_push_notification_error(self) -> None: # Create request handler without a push notifier request_handler = AsyncMock(spec=DefaultRequestHandler) # throw server error - request_handler.on_list_task_push_notification_config.side_effect = ( + request_handler.on_list_task_push_notification_configs.side_effect = ( ServerError(InternalError()) ) @@ -1135,10 +1130,10 @@ async def test_on_list_push_notification_error(self) -> None: push_notifications=True ) handler = JSONRPCHandler(self.mock_agent_card, request_handler) - list_request = ListTaskPushNotificationConfigRequest( + list_request = ListTaskPushNotificationConfigsRequest( task_id=mock_task.id, ) - response = await handler.list_push_notification_config(list_request) + response = await handler.list_push_notification_configs(list_request) # Assert self.assertIsInstance(response, dict) self.assertTrue(is_error_response(response)) diff --git a/tests/server/test_integration.py b/tests/server/test_integration.py index 2a63ae9e9..10d451fa2 100644 --- a/tests/server/test_integration.py +++ b/tests/server/test_integration.py @@ -528,7 +528,6 @@ def test_set_push_notification_config( # Setup mock response task_push_config = TaskPushNotificationConfig( task_id='t2', - id='pushNotificationConfig', push_notification_config=PushNotificationConfig( url='https://example.com', token='secret-token' ), @@ -546,7 +545,6 @@ def test_set_push_notification_config( 'method': 'CreateTaskPushNotificationConfig', 'params': { 'task_id': 't2', - 'config_id': 'pushNotificationConfig', 'config': { 'url': 'https://example.com', 'token': 'secret-token', @@ -571,7 +569,6 @@ def test_get_push_notification_config( # Setup mock response task_push_config = TaskPushNotificationConfig( task_id='task1', - id='pushNotificationConfig', push_notification_config=PushNotificationConfig( url='https://example.com', token='secret-token' ), diff --git a/tests/test_types.py b/tests/test_types.py index fe495021b..fe37c32e2 100644 --- a/tests/test_types.py +++ b/tests/test_types.py @@ -329,7 +329,6 @@ def test_set_task_push_notification_config_request(): ) request = CreateTaskPushNotificationConfigRequest( task_id='task-123', - config_id='config-1', config=config, ) assert request.task_id == 'task-123'