From fa92c752488b6a6c1150104cd1866f0612559ce8 Mon Sep 17 00:00:00 2001 From: a2a-bot Date: Sat, 14 Jun 2025 21:11:14 +0000 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20Update=20A2A=20types=20from=20speci?= =?UTF-8?q?fication=20=F0=9F=A4=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/a2a/grpc/a2a_pb2.py | 231 ++++++++++++++++++----------------- src/a2a/grpc/a2a_pb2.pyi | 15 ++- src/a2a/grpc/a2a_pb2_grpc.py | 129 ++++++++++++------- src/a2a/types.py | 155 ++++++++++++++++++++++- 4 files changed, 370 insertions(+), 160 deletions(-) diff --git a/src/a2a/grpc/a2a_pb2.py b/src/a2a/grpc/a2a_pb2.py index 629b8472..9aef7931 100644 --- a/src/a2a/grpc/a2a_pb2.py +++ b/src/a2a/grpc/a2a_pb2.py @@ -25,11 +25,12 @@ from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2 from google.api import client_pb2 as google_dot_api_dot_client__pb2 from google.api import field_behavior_pb2 as google_dot_api_dot_field__behavior__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 from google.protobuf import struct_pb2 as google_dot_protobuf_dot_struct__pb2 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\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xde\x01\n\x18SendMessageConfiguration\x12\x32\n\x15\x61\x63\x63\x65pted_output_modes\x18\x01 \x03(\tR\x13\x61\x63\x63\x65ptedOutputModes\x12K\n\x11push_notification\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigR\x10pushNotification\x12%\n\x0ehistory_length\x18\x03 \x01(\x05R\rhistoryLength\x12\x1a\n\x08\x62locking\x18\x04 \x01(\x08R\x08\x62locking\"\xf1\x01\n\x04Task\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12*\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusR\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\"\x98\x01\n\nTaskStatus\x12\'\n\x05state\x18\x01 \x01(\x0e\x32\x11.a2a.v1.TaskStateR\x05state\x12\'\n\x06update\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageR\x06update\x12\x38\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\"t\n\x04Part\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12&\n\x04\x66ile\x18\x02 \x01(\x0b\x32\x10.a2a.v1.FilePartH\x00R\x04\x66ile\x12&\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x10.a2a.v1.DataPartH\x00R\x04\x64\x61taB\x06\n\x04part\"\x7f\n\x08\x46ilePart\x12$\n\rfile_with_uri\x18\x01 \x01(\tH\x00R\x0b\x66ileWithUri\x12(\n\x0f\x66ile_with_bytes\x18\x02 \x01(\x0cH\x00R\rfileWithBytes\x12\x1b\n\tmime_type\x18\x03 \x01(\tR\x08mimeTypeB\x06\n\x04\x66ile\"7\n\x08\x44\x61taPart\x12+\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"\xff\x01\n\x07Message\x12\x1d\n\nmessage_id\x18\x01 \x01(\tR\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.RoleR\x04role\x12&\n\x07\x63ontent\x18\x05 \x03(\x0b\x32\x0c.a2a.v1.PartR\x07\x63ontent\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\"\xda\x01\n\x08\x41rtifact\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\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.PartR\x05parts\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\"\xc6\x01\n\x15TaskStatusUpdateEvent\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12*\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusR\x06status\x12\x14\n\x05\x66inal\x18\x04 \x01(\x08R\x05\x66inal\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\xeb\x01\n\x17TaskArtifactUpdateEvent\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12,\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x10.a2a.v1.ArtifactR\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\"\x94\x01\n\x16PushNotificationConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03url\x18\x02 \x01(\tR\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\"P\n\x12\x41uthenticationInfo\x12\x18\n\x07schemes\x18\x01 \x03(\tR\x07schemes\x12 \n\x0b\x63redentials\x18\x02 \x01(\tR\x0b\x63redentials\"\xc8\x05\n\tAgentCard\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x10\n\x03url\x18\x03 \x01(\tR\x03url\x12\x31\n\x08provider\x18\x04 \x01(\x0b\x32\x15.a2a.v1.AgentProviderR\x08provider\x12\x18\n\x07version\x18\x05 \x01(\tR\x07version\x12+\n\x11\x64ocumentation_url\x18\x06 \x01(\tR\x10\x64ocumentationUrl\x12=\n\x0c\x63\x61pabilities\x18\x07 \x01(\x0b\x32\x19.a2a.v1.AgentCapabilitiesR\x0c\x63\x61pabilities\x12Q\n\x10security_schemes\x18\x08 \x03(\x0b\x32&.a2a.v1.AgentCard.SecuritySchemesEntryR\x0fsecuritySchemes\x12,\n\x08security\x18\t \x03(\x0b\x32\x10.a2a.v1.SecurityR\x08security\x12.\n\x13\x64\x65\x66\x61ult_input_modes\x18\n \x03(\tR\x11\x64\x65\x66\x61ultInputModes\x12\x30\n\x14\x64\x65\x66\x61ult_output_modes\x18\x0b \x03(\tR\x12\x64\x65\x66\x61ultOutputModes\x12*\n\x06skills\x18\x0c \x03(\x0b\x32\x12.a2a.v1.AgentSkillR\x06skills\x12O\n$supports_authenticated_extended_card\x18\r \x01(\x08R!supportsAuthenticatedExtendedCard\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\"E\n\rAgentProvider\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\"\n\x0corganization\x18\x02 \x01(\tR\x0corganization\"\x98\x01\n\x11\x41gentCapabilities\x12\x1c\n\tstreaming\x18\x01 \x01(\x08R\tstreaming\x12-\n\x12push_notifications\x18\x02 \x01(\x08R\x11pushNotifications\x12\x36\n\nextensions\x18\x03 \x03(\x0b\x32\x16.a2a.v1.AgentExtensionR\nextensions\"\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\"\xc6\x01\n\nAgentSkill\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04tags\x18\x04 \x03(\tR\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\"\x8a\x01\n\x1aTaskPushNotificationConfig\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12X\n\x18push_notification_config\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigR\x16pushNotificationConfig\" \n\nStringList\x12\x12\n\x04list\x18\x01 \x03(\tR\x04list\"\x93\x01\n\x08Security\x12\x37\n\x07schemes\x18\x01 \x03(\x0b\x32\x1d.a2a.v1.Security.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\"\x91\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\x1bopenIdConnectSecuritySchemeB\x08\n\x06scheme\"h\n\x14\x41PIKeySecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"w\n\x16HTTPAuthSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06scheme\x18\x02 \x01(\tR\x06scheme\x12#\n\rbearer_format\x18\x03 \x01(\tR\x0c\x62\x65\x61rerFormat\"b\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.OAuthFlowsR\x05\x66lows\"n\n\x1bOpenIdConnectSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12-\n\x13open_id_connect_url\x18\x02 \x01(\tR\x10openIdConnectUrl\"\xb0\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\x37\n\x08implicit\x18\x03 \x01(\x0b\x32\x19.a2a.v1.ImplicitOAuthFlowH\x00R\x08implicit\x12\x37\n\x08password\x18\x04 \x01(\x0b\x32\x19.a2a.v1.PasswordOAuthFlowH\x00R\x08passwordB\x06\n\x04\x66low\"\x8a\x02\n\x1a\x41uthorizationCodeOAuthFlow\x12+\n\x11\x61uthorization_url\x18\x01 \x01(\tR\x10\x61uthorizationUrl\x12\x1b\n\ttoken_url\x18\x02 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12\x46\n\x06scopes\x18\x04 \x03(\x0b\x32..a2a.v1.AuthorizationCodeOAuthFlow.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\"\xdd\x01\n\x1a\x43lientCredentialsOAuthFlow\x12\x1b\n\ttoken_url\x18\x01 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12\x46\n\x06scopes\x18\x03 \x03(\x0b\x32..a2a.v1.ClientCredentialsOAuthFlow.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\"\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\"\xc1\x01\n\x12SendMessageRequest\x12.\n\x07request\x18\x01 \x01(\x0b\x32\x0f.a2a.v1.MessageB\x03\xe0\x41\x02R\x07request\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\"P\n\x0eGetTaskRequest\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0ehistory_length\x18\x02 \x01(\x05R\rhistoryLength\"\'\n\x11\x43\x61ncelTaskRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"4\n\x1eGetTaskPushNotificationRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\xa3\x01\n!CreateTaskPushNotificationRequest\x12\x1b\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06parent\x12 \n\tconfig_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08\x63onfigId\x12?\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\".a2a.v1.TaskPushNotificationConfigB\x03\xe0\x41\x02R\x06\x63onfig\"-\n\x17TaskSubscriptionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"u\n\x1fListTaskPushNotificationRequest\x12\x16\n\x06parent\x18\x01 \x01(\tR\x06parent\x12\x1b\n\tpage_size\x18\x02 \x01(\x05R\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"\x15\n\x13GetAgentCardRequest\"i\n\x13SendMessageResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12#\n\x03msg\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x03msgB\t\n\x07payload\"\xf6\x01\n\x0eStreamResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12#\n\x03msg\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x03msg\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\"\x88\x01\n ListTaskPushNotificationResponse\x12<\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32\".a2a.v1.TaskPushNotificationConfigR\x07\x63onfigs\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken*\xfa\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\x18\n\x14TASK_STATE_CANCELLED\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\xd3\x08\n\nA2AService\x12\x63\n\x0bSendMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x1b.a2a.v1.SendMessageResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\"\x10/v1/message:send:\x01*\x12k\n\x14SendStreamingMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x16.a2a.v1.StreamResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/message:stream:\x01*0\x01\x12R\n\x07GetTask\x12\x16.a2a.v1.GetTaskRequest\x1a\x0c.a2a.v1.Task\"!\xda\x41\x04name\x82\xd3\xe4\x93\x02\x14\x12\x12/v1/{name=tasks/*}\x12[\n\nCancelTask\x12\x19.a2a.v1.CancelTaskRequest\x1a\x0c.a2a.v1.Task\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/v1/{name=tasks/*}:cancel:\x01*\x12s\n\x10TaskSubscription\x12\x1f.a2a.v1.TaskSubscriptionRequest\x1a\x16.a2a.v1.StreamResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=tasks/*}:subscribe0\x01\x12\xb2\x01\n\x1a\x43reateTaskPushNotification\x12).a2a.v1.CreateTaskPushNotificationRequest\x1a\".a2a.v1.TaskPushNotificationConfig\"E\xda\x41\rparent,config\x82\xd3\xe4\x93\x02/\"%/v1/{parent=task/*/pushNotifications}:\x06\x63onfig\x12\x9c\x01\n\x17GetTaskPushNotification\x12&.a2a.v1.GetTaskPushNotificationRequest\x1a\".a2a.v1.TaskPushNotificationConfig\"5\xda\x41\x04name\x82\xd3\xe4\x93\x02(\x12&/v1/{name=tasks/*/pushNotifications/*}\x12\xa6\x01\n\x18ListTaskPushNotification\x12\'.a2a.v1.ListTaskPushNotificationRequest\x1a(.a2a.v1.ListTaskPushNotificationResponse\"7\xda\x41\x06parent\x82\xd3\xe4\x93\x02(\x12&/v1/{parent=tasks/*}/pushNotifications\x12P\n\x0cGetAgentCard\x12\x1b.a2a.v1.GetAgentCardRequest\x1a\x11.a2a.v1.AgentCard\"\x10\x82\xd3\xe4\x93\x02\n\x12\x08/v1/cardBi\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\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\"\xde\x01\n\x18SendMessageConfiguration\x12\x32\n\x15\x61\x63\x63\x65pted_output_modes\x18\x01 \x03(\tR\x13\x61\x63\x63\x65ptedOutputModes\x12K\n\x11push_notification\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigR\x10pushNotification\x12%\n\x0ehistory_length\x18\x03 \x01(\x05R\rhistoryLength\x12\x1a\n\x08\x62locking\x18\x04 \x01(\x08R\x08\x62locking\"\xf1\x01\n\x04Task\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12*\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusR\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\"\x98\x01\n\nTaskStatus\x12\'\n\x05state\x18\x01 \x01(\x0e\x32\x11.a2a.v1.TaskStateR\x05state\x12\'\n\x06update\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageR\x06update\x12\x38\n\ttimestamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\ttimestamp\"t\n\x04Part\x12\x14\n\x04text\x18\x01 \x01(\tH\x00R\x04text\x12&\n\x04\x66ile\x18\x02 \x01(\x0b\x32\x10.a2a.v1.FilePartH\x00R\x04\x66ile\x12&\n\x04\x64\x61ta\x18\x03 \x01(\x0b\x32\x10.a2a.v1.DataPartH\x00R\x04\x64\x61taB\x06\n\x04part\"\x7f\n\x08\x46ilePart\x12$\n\rfile_with_uri\x18\x01 \x01(\tH\x00R\x0b\x66ileWithUri\x12(\n\x0f\x66ile_with_bytes\x18\x02 \x01(\x0cH\x00R\rfileWithBytes\x12\x1b\n\tmime_type\x18\x03 \x01(\tR\x08mimeTypeB\x06\n\x04\x66ile\"7\n\x08\x44\x61taPart\x12+\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32\x17.google.protobuf.StructR\x04\x64\x61ta\"\xff\x01\n\x07Message\x12\x1d\n\nmessage_id\x18\x01 \x01(\tR\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.RoleR\x04role\x12&\n\x07\x63ontent\x18\x05 \x03(\x0b\x32\x0c.a2a.v1.PartR\x07\x63ontent\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\"\xda\x01\n\x08\x41rtifact\x12\x1f\n\x0b\x61rtifact_id\x18\x01 \x01(\tR\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.PartR\x05parts\x12\x33\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\x12\x1e\n\nextensions\x18\x07 \x03(\tR\nextensions\"\xc6\x01\n\x15TaskStatusUpdateEvent\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12*\n\x06status\x18\x03 \x01(\x0b\x32\x12.a2a.v1.TaskStatusR\x06status\x12\x14\n\x05\x66inal\x18\x04 \x01(\x08R\x05\x66inal\x12\x33\n\x08metadata\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructR\x08metadata\"\xeb\x01\n\x17TaskArtifactUpdateEvent\x12\x17\n\x07task_id\x18\x01 \x01(\tR\x06taskId\x12\x1d\n\ncontext_id\x18\x02 \x01(\tR\tcontextId\x12,\n\x08\x61rtifact\x18\x03 \x01(\x0b\x32\x10.a2a.v1.ArtifactR\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\"\x94\x01\n\x16PushNotificationConfig\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x10\n\x03url\x18\x02 \x01(\tR\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\"P\n\x12\x41uthenticationInfo\x12\x18\n\x07schemes\x18\x01 \x03(\tR\x07schemes\x12 \n\x0b\x63redentials\x18\x02 \x01(\tR\x0b\x63redentials\"\xc8\x05\n\tAgentCard\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x10\n\x03url\x18\x03 \x01(\tR\x03url\x12\x31\n\x08provider\x18\x04 \x01(\x0b\x32\x15.a2a.v1.AgentProviderR\x08provider\x12\x18\n\x07version\x18\x05 \x01(\tR\x07version\x12+\n\x11\x64ocumentation_url\x18\x06 \x01(\tR\x10\x64ocumentationUrl\x12=\n\x0c\x63\x61pabilities\x18\x07 \x01(\x0b\x32\x19.a2a.v1.AgentCapabilitiesR\x0c\x63\x61pabilities\x12Q\n\x10security_schemes\x18\x08 \x03(\x0b\x32&.a2a.v1.AgentCard.SecuritySchemesEntryR\x0fsecuritySchemes\x12,\n\x08security\x18\t \x03(\x0b\x32\x10.a2a.v1.SecurityR\x08security\x12.\n\x13\x64\x65\x66\x61ult_input_modes\x18\n \x03(\tR\x11\x64\x65\x66\x61ultInputModes\x12\x30\n\x14\x64\x65\x66\x61ult_output_modes\x18\x0b \x03(\tR\x12\x64\x65\x66\x61ultOutputModes\x12*\n\x06skills\x18\x0c \x03(\x0b\x32\x12.a2a.v1.AgentSkillR\x06skills\x12O\n$supports_authenticated_extended_card\x18\r \x01(\x08R!supportsAuthenticatedExtendedCard\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\"E\n\rAgentProvider\x12\x10\n\x03url\x18\x01 \x01(\tR\x03url\x12\"\n\x0corganization\x18\x02 \x01(\tR\x0corganization\"\x98\x01\n\x11\x41gentCapabilities\x12\x1c\n\tstreaming\x18\x01 \x01(\x08R\tstreaming\x12-\n\x12push_notifications\x18\x02 \x01(\x08R\x11pushNotifications\x12\x36\n\nextensions\x18\x03 \x03(\x0b\x32\x16.a2a.v1.AgentExtensionR\nextensions\"\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\"\xc6\x01\n\nAgentSkill\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04tags\x18\x04 \x03(\tR\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\"\x8a\x01\n\x1aTaskPushNotificationConfig\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\x12X\n\x18push_notification_config\x18\x02 \x01(\x0b\x32\x1e.a2a.v1.PushNotificationConfigR\x16pushNotificationConfig\" \n\nStringList\x12\x12\n\x04list\x18\x01 \x03(\tR\x04list\"\x93\x01\n\x08Security\x12\x37\n\x07schemes\x18\x01 \x03(\x0b\x32\x1d.a2a.v1.Security.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\"\x91\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\x1bopenIdConnectSecuritySchemeB\x08\n\x06scheme\"h\n\x14\x41PIKeySecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x1a\n\x08location\x18\x02 \x01(\tR\x08location\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\"w\n\x16HTTPAuthSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12\x16\n\x06scheme\x18\x02 \x01(\tR\x06scheme\x12#\n\rbearer_format\x18\x03 \x01(\tR\x0c\x62\x65\x61rerFormat\"b\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.OAuthFlowsR\x05\x66lows\"n\n\x1bOpenIdConnectSecurityScheme\x12 \n\x0b\x64\x65scription\x18\x01 \x01(\tR\x0b\x64\x65scription\x12-\n\x13open_id_connect_url\x18\x02 \x01(\tR\x10openIdConnectUrl\"\xb0\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\x37\n\x08implicit\x18\x03 \x01(\x0b\x32\x19.a2a.v1.ImplicitOAuthFlowH\x00R\x08implicit\x12\x37\n\x08password\x18\x04 \x01(\x0b\x32\x19.a2a.v1.PasswordOAuthFlowH\x00R\x08passwordB\x06\n\x04\x66low\"\x8a\x02\n\x1a\x41uthorizationCodeOAuthFlow\x12+\n\x11\x61uthorization_url\x18\x01 \x01(\tR\x10\x61uthorizationUrl\x12\x1b\n\ttoken_url\x18\x02 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x03 \x01(\tR\nrefreshUrl\x12\x46\n\x06scopes\x18\x04 \x03(\x0b\x32..a2a.v1.AuthorizationCodeOAuthFlow.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\"\xdd\x01\n\x1a\x43lientCredentialsOAuthFlow\x12\x1b\n\ttoken_url\x18\x01 \x01(\tR\x08tokenUrl\x12\x1f\n\x0brefresh_url\x18\x02 \x01(\tR\nrefreshUrl\x12\x46\n\x06scopes\x18\x03 \x03(\x0b\x32..a2a.v1.ClientCredentialsOAuthFlow.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\"\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\"\xc1\x01\n\x12SendMessageRequest\x12.\n\x07request\x18\x01 \x01(\x0b\x32\x0f.a2a.v1.MessageB\x03\xe0\x41\x02R\x07request\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\"P\n\x0eGetTaskRequest\x12\x17\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x04name\x12%\n\x0ehistory_length\x18\x02 \x01(\x05R\rhistoryLength\"\'\n\x11\x43\x61ncelTaskRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\":\n$GetTaskPushNotificationConfigRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"=\n\'DeleteTaskPushNotificationConfigRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"\xa9\x01\n\'CreateTaskPushNotificationConfigRequest\x12\x1b\n\x06parent\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x06parent\x12 \n\tconfig_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08\x63onfigId\x12?\n\x06\x63onfig\x18\x03 \x01(\x0b\x32\".a2a.v1.TaskPushNotificationConfigB\x03\xe0\x41\x02R\x06\x63onfig\"-\n\x17TaskSubscriptionRequest\x12\x12\n\x04name\x18\x01 \x01(\tR\x04name\"{\n%ListTaskPushNotificationConfigRequest\x12\x16\n\x06parent\x18\x01 \x01(\tR\x06parent\x12\x1b\n\tpage_size\x18\x02 \x01(\x05R\x08pageSize\x12\x1d\n\npage_token\x18\x03 \x01(\tR\tpageToken\"\x15\n\x13GetAgentCardRequest\"i\n\x13SendMessageResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12#\n\x03msg\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x03msgB\t\n\x07payload\"\xf6\x01\n\x0eStreamResponse\x12\"\n\x04task\x18\x01 \x01(\x0b\x32\x0c.a2a.v1.TaskH\x00R\x04task\x12#\n\x03msg\x18\x02 \x01(\x0b\x32\x0f.a2a.v1.MessageH\x00R\x03msg\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*\xfa\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\x18\n\x14TASK_STATE_CANCELLED\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\xb9\n\n\nA2AService\x12\x63\n\x0bSendMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x1b.a2a.v1.SendMessageResponse\"\x1b\x82\xd3\xe4\x93\x02\x15\"\x10/v1/message:send:\x01*\x12k\n\x14SendStreamingMessage\x12\x1a.a2a.v1.SendMessageRequest\x1a\x16.a2a.v1.StreamResponse\"\x1d\x82\xd3\xe4\x93\x02\x17\"\x12/v1/message:stream:\x01*0\x01\x12R\n\x07GetTask\x12\x16.a2a.v1.GetTaskRequest\x1a\x0c.a2a.v1.Task\"!\xda\x41\x04name\x82\xd3\xe4\x93\x02\x14\x12\x12/v1/{name=tasks/*}\x12[\n\nCancelTask\x12\x19.a2a.v1.CancelTaskRequest\x1a\x0c.a2a.v1.Task\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/v1/{name=tasks/*}:cancel:\x01*\x12s\n\x10TaskSubscription\x12\x1f.a2a.v1.TaskSubscriptionRequest\x1a\x16.a2a.v1.StreamResponse\"$\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=tasks/*}:subscribe0\x01\x12\xc4\x01\n CreateTaskPushNotificationConfig\x12/.a2a.v1.CreateTaskPushNotificationConfigRequest\x1a\".a2a.v1.TaskPushNotificationConfig\"K\xda\x41\rparent,config\x82\xd3\xe4\x93\x02\x35\"+/v1/{parent=task/*/pushNotificationConfigs}:\x06\x63onfig\x12\xae\x01\n\x1dGetTaskPushNotificationConfig\x12,.a2a.v1.GetTaskPushNotificationConfigRequest\x1a\".a2a.v1.TaskPushNotificationConfig\";\xda\x41\x04name\x82\xd3\xe4\x93\x02.\x12,/v1/{name=tasks/*/pushNotificationConfigs/*}\x12\xbe\x01\n\x1eListTaskPushNotificationConfig\x12-.a2a.v1.ListTaskPushNotificationConfigRequest\x1a..a2a.v1.ListTaskPushNotificationConfigResponse\"=\xda\x41\x06parent\x82\xd3\xe4\x93\x02.\x12,/v1/{parent=tasks/*}/pushNotificationConfigs\x12P\n\x0cGetAgentCard\x12\x1b.a2a.v1.GetAgentCardRequest\x1a\x11.a2a.v1.AgentCard\"\x10\x82\xd3\xe4\x93\x02\n\x12\x08/v1/card\x12\xa7\x01\n DeleteTaskPushNotificationConfig\x12/.a2a.v1.DeleteTaskPushNotificationConfigRequest\x1a\x16.google.protobuf.Empty\":\xda\x41\x04name\x82\xd3\xe4\x93\x02-*+/v1/{name=tasks/*/pushNotificationConfig/*}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') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -53,12 +54,12 @@ _globals['_SENDMESSAGEREQUEST'].fields_by_name['request']._serialized_options = b'\340A\002' _globals['_GETTASKREQUEST'].fields_by_name['name']._loaded_options = None _globals['_GETTASKREQUEST'].fields_by_name['name']._serialized_options = b'\340A\002' - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['parent']._loaded_options = None - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['parent']._serialized_options = b'\340A\002' - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['config_id']._loaded_options = None - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['config_id']._serialized_options = b'\340A\002' - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['config']._loaded_options = None - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST'].fields_by_name['config']._serialized_options = b'\340A\002' + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['parent']._loaded_options = None + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST'].fields_by_name['parent']._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['_A2ASERVICE'].methods_by_name['SendMessage']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['SendMessage']._serialized_options = b'\202\323\344\223\002\025\"\020/v1/message:send:\001*' _globals['_A2ASERVICE'].methods_by_name['SendStreamingMessage']._loaded_options = None @@ -69,112 +70,116 @@ _globals['_A2ASERVICE'].methods_by_name['CancelTask']._serialized_options = b'\202\323\344\223\002\036\"\031/v1/{name=tasks/*}:cancel:\001*' _globals['_A2ASERVICE'].methods_by_name['TaskSubscription']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['TaskSubscription']._serialized_options = b'\202\323\344\223\002\036\022\034/v1/{name=tasks/*}:subscribe' - _globals['_A2ASERVICE'].methods_by_name['CreateTaskPushNotification']._loaded_options = None - _globals['_A2ASERVICE'].methods_by_name['CreateTaskPushNotification']._serialized_options = b'\332A\rparent,config\202\323\344\223\002/\"%/v1/{parent=task/*/pushNotifications}:\006config' - _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotification']._loaded_options = None - _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotification']._serialized_options = b'\332A\004name\202\323\344\223\002(\022&/v1/{name=tasks/*/pushNotifications/*}' - _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotification']._loaded_options = None - _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotification']._serialized_options = b'\332A\006parent\202\323\344\223\002(\022&/v1/{parent=tasks/*}/pushNotifications' + _globals['_A2ASERVICE'].methods_by_name['CreateTaskPushNotificationConfig']._loaded_options = None + _globals['_A2ASERVICE'].methods_by_name['CreateTaskPushNotificationConfig']._serialized_options = b'\332A\rparent,config\202\323\344\223\0025\"+/v1/{parent=task/*/pushNotificationConfigs}:\006config' + _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotificationConfig']._loaded_options = None + _globals['_A2ASERVICE'].methods_by_name['GetTaskPushNotificationConfig']._serialized_options = b'\332A\004name\202\323\344\223\002.\022,/v1/{name=tasks/*/pushNotificationConfigs/*}' + _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfig']._loaded_options = None + _globals['_A2ASERVICE'].methods_by_name['ListTaskPushNotificationConfig']._serialized_options = b'\332A\006parent\202\323\344\223\002.\022,/v1/{parent=tasks/*}/pushNotificationConfigs' _globals['_A2ASERVICE'].methods_by_name['GetAgentCard']._loaded_options = None _globals['_A2ASERVICE'].methods_by_name['GetAgentCard']._serialized_options = b'\202\323\344\223\002\n\022\010/v1/card' - _globals['_TASKSTATE']._serialized_start=7161 - _globals['_TASKSTATE']._serialized_end=7411 - _globals['_ROLE']._serialized_start=7413 - _globals['_ROLE']._serialized_end=7472 - _globals['_SENDMESSAGECONFIGURATION']._serialized_start=173 - _globals['_SENDMESSAGECONFIGURATION']._serialized_end=395 - _globals['_TASK']._serialized_start=398 - _globals['_TASK']._serialized_end=639 - _globals['_TASKSTATUS']._serialized_start=642 - _globals['_TASKSTATUS']._serialized_end=794 - _globals['_PART']._serialized_start=796 - _globals['_PART']._serialized_end=912 - _globals['_FILEPART']._serialized_start=914 - _globals['_FILEPART']._serialized_end=1041 - _globals['_DATAPART']._serialized_start=1043 - _globals['_DATAPART']._serialized_end=1098 - _globals['_MESSAGE']._serialized_start=1101 - _globals['_MESSAGE']._serialized_end=1356 - _globals['_ARTIFACT']._serialized_start=1359 - _globals['_ARTIFACT']._serialized_end=1577 - _globals['_TASKSTATUSUPDATEEVENT']._serialized_start=1580 - _globals['_TASKSTATUSUPDATEEVENT']._serialized_end=1778 - _globals['_TASKARTIFACTUPDATEEVENT']._serialized_start=1781 - _globals['_TASKARTIFACTUPDATEEVENT']._serialized_end=2016 - _globals['_PUSHNOTIFICATIONCONFIG']._serialized_start=2019 - _globals['_PUSHNOTIFICATIONCONFIG']._serialized_end=2167 - _globals['_AUTHENTICATIONINFO']._serialized_start=2169 - _globals['_AUTHENTICATIONINFO']._serialized_end=2249 - _globals['_AGENTCARD']._serialized_start=2252 - _globals['_AGENTCARD']._serialized_end=2964 - _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_start=2874 - _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_end=2964 - _globals['_AGENTPROVIDER']._serialized_start=2966 - _globals['_AGENTPROVIDER']._serialized_end=3035 - _globals['_AGENTCAPABILITIES']._serialized_start=3038 - _globals['_AGENTCAPABILITIES']._serialized_end=3190 - _globals['_AGENTEXTENSION']._serialized_start=3193 - _globals['_AGENTEXTENSION']._serialized_end=3338 - _globals['_AGENTSKILL']._serialized_start=3341 - _globals['_AGENTSKILL']._serialized_end=3539 - _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_start=3542 - _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_end=3680 - _globals['_STRINGLIST']._serialized_start=3682 - _globals['_STRINGLIST']._serialized_end=3714 - _globals['_SECURITY']._serialized_start=3717 - _globals['_SECURITY']._serialized_end=3864 - _globals['_SECURITY_SCHEMESENTRY']._serialized_start=3786 - _globals['_SECURITY_SCHEMESENTRY']._serialized_end=3864 - _globals['_SECURITYSCHEME']._serialized_start=3867 - _globals['_SECURITYSCHEME']._serialized_end=4268 - _globals['_APIKEYSECURITYSCHEME']._serialized_start=4270 - _globals['_APIKEYSECURITYSCHEME']._serialized_end=4374 - _globals['_HTTPAUTHSECURITYSCHEME']._serialized_start=4376 - _globals['_HTTPAUTHSECURITYSCHEME']._serialized_end=4495 - _globals['_OAUTH2SECURITYSCHEME']._serialized_start=4497 - _globals['_OAUTH2SECURITYSCHEME']._serialized_end=4595 - _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_start=4597 - _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_end=4707 - _globals['_OAUTHFLOWS']._serialized_start=4710 - _globals['_OAUTHFLOWS']._serialized_end=5014 - _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_start=5017 - _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_end=5283 - _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_start=5226 - _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_end=5283 - _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_start=5286 - _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_end=5507 - _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_start=5226 - _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_end=5283 - _globals['_IMPLICITOAUTHFLOW']._serialized_start=5510 - _globals['_IMPLICITOAUTHFLOW']._serialized_end=5729 - _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_start=5226 - _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_end=5283 - _globals['_PASSWORDOAUTHFLOW']._serialized_start=5732 - _globals['_PASSWORDOAUTHFLOW']._serialized_end=5935 - _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_start=5226 - _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_end=5283 - _globals['_SENDMESSAGEREQUEST']._serialized_start=5938 - _globals['_SENDMESSAGEREQUEST']._serialized_end=6131 - _globals['_GETTASKREQUEST']._serialized_start=6133 - _globals['_GETTASKREQUEST']._serialized_end=6213 - _globals['_CANCELTASKREQUEST']._serialized_start=6215 - _globals['_CANCELTASKREQUEST']._serialized_end=6254 - _globals['_GETTASKPUSHNOTIFICATIONREQUEST']._serialized_start=6256 - _globals['_GETTASKPUSHNOTIFICATIONREQUEST']._serialized_end=6308 - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST']._serialized_start=6311 - _globals['_CREATETASKPUSHNOTIFICATIONREQUEST']._serialized_end=6474 - _globals['_TASKSUBSCRIPTIONREQUEST']._serialized_start=6476 - _globals['_TASKSUBSCRIPTIONREQUEST']._serialized_end=6521 - _globals['_LISTTASKPUSHNOTIFICATIONREQUEST']._serialized_start=6523 - _globals['_LISTTASKPUSHNOTIFICATIONREQUEST']._serialized_end=6640 - _globals['_GETAGENTCARDREQUEST']._serialized_start=6642 - _globals['_GETAGENTCARDREQUEST']._serialized_end=6663 - _globals['_SENDMESSAGERESPONSE']._serialized_start=6665 - _globals['_SENDMESSAGERESPONSE']._serialized_end=6770 - _globals['_STREAMRESPONSE']._serialized_start=6773 - _globals['_STREAMRESPONSE']._serialized_end=7019 - _globals['_LISTTASKPUSHNOTIFICATIONRESPONSE']._serialized_start=7022 - _globals['_LISTTASKPUSHNOTIFICATIONRESPONSE']._serialized_end=7158 - _globals['_A2ASERVICE']._serialized_start=7475 - _globals['_A2ASERVICE']._serialized_end=8582 + _globals['_A2ASERVICE'].methods_by_name['DeleteTaskPushNotificationConfig']._loaded_options = None + _globals['_A2ASERVICE'].methods_by_name['DeleteTaskPushNotificationConfig']._serialized_options = b'\332A\004name\202\323\344\223\002-*+/v1/{name=tasks/*/pushNotificationConfig/*}' + _globals['_TASKSTATE']._serialized_start=7277 + _globals['_TASKSTATE']._serialized_end=7527 + _globals['_ROLE']._serialized_start=7529 + _globals['_ROLE']._serialized_end=7588 + _globals['_SENDMESSAGECONFIGURATION']._serialized_start=202 + _globals['_SENDMESSAGECONFIGURATION']._serialized_end=424 + _globals['_TASK']._serialized_start=427 + _globals['_TASK']._serialized_end=668 + _globals['_TASKSTATUS']._serialized_start=671 + _globals['_TASKSTATUS']._serialized_end=823 + _globals['_PART']._serialized_start=825 + _globals['_PART']._serialized_end=941 + _globals['_FILEPART']._serialized_start=943 + _globals['_FILEPART']._serialized_end=1070 + _globals['_DATAPART']._serialized_start=1072 + _globals['_DATAPART']._serialized_end=1127 + _globals['_MESSAGE']._serialized_start=1130 + _globals['_MESSAGE']._serialized_end=1385 + _globals['_ARTIFACT']._serialized_start=1388 + _globals['_ARTIFACT']._serialized_end=1606 + _globals['_TASKSTATUSUPDATEEVENT']._serialized_start=1609 + _globals['_TASKSTATUSUPDATEEVENT']._serialized_end=1807 + _globals['_TASKARTIFACTUPDATEEVENT']._serialized_start=1810 + _globals['_TASKARTIFACTUPDATEEVENT']._serialized_end=2045 + _globals['_PUSHNOTIFICATIONCONFIG']._serialized_start=2048 + _globals['_PUSHNOTIFICATIONCONFIG']._serialized_end=2196 + _globals['_AUTHENTICATIONINFO']._serialized_start=2198 + _globals['_AUTHENTICATIONINFO']._serialized_end=2278 + _globals['_AGENTCARD']._serialized_start=2281 + _globals['_AGENTCARD']._serialized_end=2993 + _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_start=2903 + _globals['_AGENTCARD_SECURITYSCHEMESENTRY']._serialized_end=2993 + _globals['_AGENTPROVIDER']._serialized_start=2995 + _globals['_AGENTPROVIDER']._serialized_end=3064 + _globals['_AGENTCAPABILITIES']._serialized_start=3067 + _globals['_AGENTCAPABILITIES']._serialized_end=3219 + _globals['_AGENTEXTENSION']._serialized_start=3222 + _globals['_AGENTEXTENSION']._serialized_end=3367 + _globals['_AGENTSKILL']._serialized_start=3370 + _globals['_AGENTSKILL']._serialized_end=3568 + _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_start=3571 + _globals['_TASKPUSHNOTIFICATIONCONFIG']._serialized_end=3709 + _globals['_STRINGLIST']._serialized_start=3711 + _globals['_STRINGLIST']._serialized_end=3743 + _globals['_SECURITY']._serialized_start=3746 + _globals['_SECURITY']._serialized_end=3893 + _globals['_SECURITY_SCHEMESENTRY']._serialized_start=3815 + _globals['_SECURITY_SCHEMESENTRY']._serialized_end=3893 + _globals['_SECURITYSCHEME']._serialized_start=3896 + _globals['_SECURITYSCHEME']._serialized_end=4297 + _globals['_APIKEYSECURITYSCHEME']._serialized_start=4299 + _globals['_APIKEYSECURITYSCHEME']._serialized_end=4403 + _globals['_HTTPAUTHSECURITYSCHEME']._serialized_start=4405 + _globals['_HTTPAUTHSECURITYSCHEME']._serialized_end=4524 + _globals['_OAUTH2SECURITYSCHEME']._serialized_start=4526 + _globals['_OAUTH2SECURITYSCHEME']._serialized_end=4624 + _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_start=4626 + _globals['_OPENIDCONNECTSECURITYSCHEME']._serialized_end=4736 + _globals['_OAUTHFLOWS']._serialized_start=4739 + _globals['_OAUTHFLOWS']._serialized_end=5043 + _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_start=5046 + _globals['_AUTHORIZATIONCODEOAUTHFLOW']._serialized_end=5312 + _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_start=5255 + _globals['_AUTHORIZATIONCODEOAUTHFLOW_SCOPESENTRY']._serialized_end=5312 + _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_start=5315 + _globals['_CLIENTCREDENTIALSOAUTHFLOW']._serialized_end=5536 + _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_start=5255 + _globals['_CLIENTCREDENTIALSOAUTHFLOW_SCOPESENTRY']._serialized_end=5312 + _globals['_IMPLICITOAUTHFLOW']._serialized_start=5539 + _globals['_IMPLICITOAUTHFLOW']._serialized_end=5758 + _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_start=5255 + _globals['_IMPLICITOAUTHFLOW_SCOPESENTRY']._serialized_end=5312 + _globals['_PASSWORDOAUTHFLOW']._serialized_start=5761 + _globals['_PASSWORDOAUTHFLOW']._serialized_end=5964 + _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_start=5255 + _globals['_PASSWORDOAUTHFLOW_SCOPESENTRY']._serialized_end=5312 + _globals['_SENDMESSAGEREQUEST']._serialized_start=5967 + _globals['_SENDMESSAGEREQUEST']._serialized_end=6160 + _globals['_GETTASKREQUEST']._serialized_start=6162 + _globals['_GETTASKREQUEST']._serialized_end=6242 + _globals['_CANCELTASKREQUEST']._serialized_start=6244 + _globals['_CANCELTASKREQUEST']._serialized_end=6283 + _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=6285 + _globals['_GETTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=6343 + _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=6345 + _globals['_DELETETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=6406 + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=6409 + _globals['_CREATETASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=6578 + _globals['_TASKSUBSCRIPTIONREQUEST']._serialized_start=6580 + _globals['_TASKSUBSCRIPTIONREQUEST']._serialized_end=6625 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_start=6627 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGREQUEST']._serialized_end=6750 + _globals['_GETAGENTCARDREQUEST']._serialized_start=6752 + _globals['_GETAGENTCARDREQUEST']._serialized_end=6773 + _globals['_SENDMESSAGERESPONSE']._serialized_start=6775 + _globals['_SENDMESSAGERESPONSE']._serialized_end=6880 + _globals['_STREAMRESPONSE']._serialized_start=6883 + _globals['_STREAMRESPONSE']._serialized_end=7129 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGRESPONSE']._serialized_start=7132 + _globals['_LISTTASKPUSHNOTIFICATIONCONFIGRESPONSE']._serialized_end=7274 + _globals['_A2ASERVICE']._serialized_start=7591 + _globals['_A2ASERVICE']._serialized_end=8928 # @@protoc_insertion_point(module_scope) diff --git a/src/a2a/grpc/a2a_pb2.pyi b/src/a2a/grpc/a2a_pb2.pyi index 31f36315..abf83be4 100644 --- a/src/a2a/grpc/a2a_pb2.pyi +++ b/src/a2a/grpc/a2a_pb2.pyi @@ -3,6 +3,7 @@ import datetime from google.api import annotations_pb2 as _annotations_pb2 from google.api import client_pb2 as _client_pb2 from google.api import field_behavior_pb2 as _field_behavior_pb2 +from google.protobuf import empty_pb2 as _empty_pb2 from google.protobuf import struct_pb2 as _struct_pb2 from google.protobuf import timestamp_pb2 as _timestamp_pb2 from google.protobuf.internal import containers as _containers @@ -458,13 +459,19 @@ class CancelTaskRequest(_message.Message): name: str def __init__(self, name: _Optional[str] = ...) -> None: ... -class GetTaskPushNotificationRequest(_message.Message): +class GetTaskPushNotificationConfigRequest(_message.Message): __slots__ = ("name",) NAME_FIELD_NUMBER: _ClassVar[int] name: str def __init__(self, name: _Optional[str] = ...) -> None: ... -class CreateTaskPushNotificationRequest(_message.Message): +class DeleteTaskPushNotificationConfigRequest(_message.Message): + __slots__ = ("name",) + NAME_FIELD_NUMBER: _ClassVar[int] + name: str + def __init__(self, name: _Optional[str] = ...) -> None: ... + +class CreateTaskPushNotificationConfigRequest(_message.Message): __slots__ = ("parent", "config_id", "config") PARENT_FIELD_NUMBER: _ClassVar[int] CONFIG_ID_FIELD_NUMBER: _ClassVar[int] @@ -480,7 +487,7 @@ class TaskSubscriptionRequest(_message.Message): name: str def __init__(self, name: _Optional[str] = ...) -> None: ... -class ListTaskPushNotificationRequest(_message.Message): +class ListTaskPushNotificationConfigRequest(_message.Message): __slots__ = ("parent", "page_size", "page_token") PARENT_FIELD_NUMBER: _ClassVar[int] PAGE_SIZE_FIELD_NUMBER: _ClassVar[int] @@ -514,7 +521,7 @@ class StreamResponse(_message.Message): artifact_update: TaskArtifactUpdateEvent def __init__(self, task: _Optional[_Union[Task, _Mapping]] = ..., msg: _Optional[_Union[Message, _Mapping]] = ..., status_update: _Optional[_Union[TaskStatusUpdateEvent, _Mapping]] = ..., artifact_update: _Optional[_Union[TaskArtifactUpdateEvent, _Mapping]] = ...) -> None: ... -class ListTaskPushNotificationResponse(_message.Message): +class ListTaskPushNotificationConfigResponse(_message.Message): __slots__ = ("configs", "next_page_token") CONFIGS_FIELD_NUMBER: _ClassVar[int] NEXT_PAGE_TOKEN_FIELD_NUMBER: _ClassVar[int] diff --git a/src/a2a/grpc/a2a_pb2_grpc.py b/src/a2a/grpc/a2a_pb2_grpc.py index 5c3f6456..6f3ef260 100644 --- a/src/a2a/grpc/a2a_pb2_grpc.py +++ b/src/a2a/grpc/a2a_pb2_grpc.py @@ -3,18 +3,19 @@ import grpc from . import a2a_pb2 as a2a__pb2 +from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2 class A2AServiceStub(object): """A2AService defines the gRPC version of the A2A protocol. This has a slightly different shape than the JSONRPC version to better conform to AIP-127, where appropriate. The nouns are AgentCard, Message, Task and - TaskPushNotification. + TaskPushNotificationConfig. - Messages are not a standard resource so there is no get/delete/update/list interface, only a send and stream custom methods. - Tasks have a get interface and custom cancel and subscribe methods. - - TaskPushNotification are a resource whose parent is a task. They have get, - list and create methods. + - TaskPushNotificationConfig are a resource whose parent is a task. + They have get, list and create methods. - AgentCard is a static resource with only a get method. fields are not present as they don't comply with AIP rules, and the optional history_length on the get task method is not present as it also @@ -52,38 +53,43 @@ def __init__(self, channel): request_serializer=a2a__pb2.TaskSubscriptionRequest.SerializeToString, response_deserializer=a2a__pb2.StreamResponse.FromString, _registered_method=True) - self.CreateTaskPushNotification = channel.unary_unary( - '/a2a.v1.A2AService/CreateTaskPushNotification', - request_serializer=a2a__pb2.CreateTaskPushNotificationRequest.SerializeToString, + self.CreateTaskPushNotificationConfig = channel.unary_unary( + '/a2a.v1.A2AService/CreateTaskPushNotificationConfig', + request_serializer=a2a__pb2.CreateTaskPushNotificationConfigRequest.SerializeToString, response_deserializer=a2a__pb2.TaskPushNotificationConfig.FromString, _registered_method=True) - self.GetTaskPushNotification = channel.unary_unary( - '/a2a.v1.A2AService/GetTaskPushNotification', - request_serializer=a2a__pb2.GetTaskPushNotificationRequest.SerializeToString, + self.GetTaskPushNotificationConfig = channel.unary_unary( + '/a2a.v1.A2AService/GetTaskPushNotificationConfig', + request_serializer=a2a__pb2.GetTaskPushNotificationConfigRequest.SerializeToString, response_deserializer=a2a__pb2.TaskPushNotificationConfig.FromString, _registered_method=True) - self.ListTaskPushNotification = channel.unary_unary( - '/a2a.v1.A2AService/ListTaskPushNotification', - request_serializer=a2a__pb2.ListTaskPushNotificationRequest.SerializeToString, - response_deserializer=a2a__pb2.ListTaskPushNotificationResponse.FromString, + self.ListTaskPushNotificationConfig = channel.unary_unary( + '/a2a.v1.A2AService/ListTaskPushNotificationConfig', + request_serializer=a2a__pb2.ListTaskPushNotificationConfigRequest.SerializeToString, + response_deserializer=a2a__pb2.ListTaskPushNotificationConfigResponse.FromString, _registered_method=True) self.GetAgentCard = channel.unary_unary( '/a2a.v1.A2AService/GetAgentCard', request_serializer=a2a__pb2.GetAgentCardRequest.SerializeToString, response_deserializer=a2a__pb2.AgentCard.FromString, _registered_method=True) + self.DeleteTaskPushNotificationConfig = channel.unary_unary( + '/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 gRPC version of the A2A protocol. This has a slightly different shape than the JSONRPC version to better conform to AIP-127, where appropriate. The nouns are AgentCard, Message, Task and - TaskPushNotification. + TaskPushNotificationConfig. - Messages are not a standard resource so there is no get/delete/update/list interface, only a send and stream custom methods. - Tasks have a get interface and custom cancel and subscribe methods. - - TaskPushNotification are a resource whose parent is a task. They have get, - list and create methods. + - TaskPushNotificationConfig are a resource whose parent is a task. + They have get, list and create methods. - AgentCard is a static resource with only a get method. fields are not present as they don't comply with AIP rules, and the optional history_length on the get task method is not present as it also @@ -131,21 +137,21 @@ def TaskSubscription(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def CreateTaskPushNotification(self, request, context): + def CreateTaskPushNotificationConfig(self, request, context): """Set 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 GetTaskPushNotification(self, request, context): + def GetTaskPushNotificationConfig(self, request, context): """Get 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 ListTaskPushNotification(self, request, context): + def ListTaskPushNotificationConfig(self, request, context): """Get a list of push notifications configured for a task. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -159,6 +165,13 @@ def GetAgentCard(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def DeleteTaskPushNotificationConfig(self, request, context): + """Delete 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 add_A2AServiceServicer_to_server(servicer, server): rpc_method_handlers = { @@ -187,26 +200,31 @@ def add_A2AServiceServicer_to_server(servicer, server): request_deserializer=a2a__pb2.TaskSubscriptionRequest.FromString, response_serializer=a2a__pb2.StreamResponse.SerializeToString, ), - 'CreateTaskPushNotification': grpc.unary_unary_rpc_method_handler( - servicer.CreateTaskPushNotification, - request_deserializer=a2a__pb2.CreateTaskPushNotificationRequest.FromString, + 'CreateTaskPushNotificationConfig': grpc.unary_unary_rpc_method_handler( + servicer.CreateTaskPushNotificationConfig, + request_deserializer=a2a__pb2.CreateTaskPushNotificationConfigRequest.FromString, response_serializer=a2a__pb2.TaskPushNotificationConfig.SerializeToString, ), - 'GetTaskPushNotification': grpc.unary_unary_rpc_method_handler( - servicer.GetTaskPushNotification, - request_deserializer=a2a__pb2.GetTaskPushNotificationRequest.FromString, + 'GetTaskPushNotificationConfig': grpc.unary_unary_rpc_method_handler( + servicer.GetTaskPushNotificationConfig, + request_deserializer=a2a__pb2.GetTaskPushNotificationConfigRequest.FromString, response_serializer=a2a__pb2.TaskPushNotificationConfig.SerializeToString, ), - 'ListTaskPushNotification': grpc.unary_unary_rpc_method_handler( - servicer.ListTaskPushNotification, - request_deserializer=a2a__pb2.ListTaskPushNotificationRequest.FromString, - response_serializer=a2a__pb2.ListTaskPushNotificationResponse.SerializeToString, + 'ListTaskPushNotificationConfig': grpc.unary_unary_rpc_method_handler( + servicer.ListTaskPushNotificationConfig, + request_deserializer=a2a__pb2.ListTaskPushNotificationConfigRequest.FromString, + response_serializer=a2a__pb2.ListTaskPushNotificationConfigResponse.SerializeToString, ), 'GetAgentCard': grpc.unary_unary_rpc_method_handler( servicer.GetAgentCard, request_deserializer=a2a__pb2.GetAgentCardRequest.FromString, response_serializer=a2a__pb2.AgentCard.SerializeToString, ), + 'DeleteTaskPushNotificationConfig': grpc.unary_unary_rpc_method_handler( + servicer.DeleteTaskPushNotificationConfig, + request_deserializer=a2a__pb2.DeleteTaskPushNotificationConfigRequest.FromString, + response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'a2a.v1.A2AService', rpc_method_handlers) @@ -219,12 +237,12 @@ class A2AService(object): """A2AService defines the gRPC version of the A2A protocol. This has a slightly different shape than the JSONRPC version to better conform to AIP-127, where appropriate. The nouns are AgentCard, Message, Task and - TaskPushNotification. + TaskPushNotificationConfig. - Messages are not a standard resource so there is no get/delete/update/list interface, only a send and stream custom methods. - Tasks have a get interface and custom cancel and subscribe methods. - - TaskPushNotification are a resource whose parent is a task. They have get, - list and create methods. + - TaskPushNotificationConfig are a resource whose parent is a task. + They have get, list and create methods. - AgentCard is a static resource with only a get method. fields are not present as they don't comply with AIP rules, and the optional history_length on the get task method is not present as it also @@ -367,7 +385,7 @@ def TaskSubscription(request, _registered_method=True) @staticmethod - def CreateTaskPushNotification(request, + def CreateTaskPushNotificationConfig(request, target, options=(), channel_credentials=None, @@ -380,8 +398,8 @@ def CreateTaskPushNotification(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/CreateTaskPushNotification', - a2a__pb2.CreateTaskPushNotificationRequest.SerializeToString, + '/a2a.v1.A2AService/CreateTaskPushNotificationConfig', + a2a__pb2.CreateTaskPushNotificationConfigRequest.SerializeToString, a2a__pb2.TaskPushNotificationConfig.FromString, options, channel_credentials, @@ -394,7 +412,7 @@ def CreateTaskPushNotification(request, _registered_method=True) @staticmethod - def GetTaskPushNotification(request, + def GetTaskPushNotificationConfig(request, target, options=(), channel_credentials=None, @@ -407,8 +425,8 @@ def GetTaskPushNotification(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/GetTaskPushNotification', - a2a__pb2.GetTaskPushNotificationRequest.SerializeToString, + '/a2a.v1.A2AService/GetTaskPushNotificationConfig', + a2a__pb2.GetTaskPushNotificationConfigRequest.SerializeToString, a2a__pb2.TaskPushNotificationConfig.FromString, options, channel_credentials, @@ -421,7 +439,7 @@ def GetTaskPushNotification(request, _registered_method=True) @staticmethod - def ListTaskPushNotification(request, + def ListTaskPushNotificationConfig(request, target, options=(), channel_credentials=None, @@ -434,9 +452,9 @@ def ListTaskPushNotification(request, return grpc.experimental.unary_unary( request, target, - '/a2a.v1.A2AService/ListTaskPushNotification', - a2a__pb2.ListTaskPushNotificationRequest.SerializeToString, - a2a__pb2.ListTaskPushNotificationResponse.FromString, + '/a2a.v1.A2AService/ListTaskPushNotificationConfig', + a2a__pb2.ListTaskPushNotificationConfigRequest.SerializeToString, + a2a__pb2.ListTaskPushNotificationConfigResponse.FromString, options, channel_credentials, insecure, @@ -473,3 +491,30 @@ def GetAgentCard(request, timeout, metadata, _registered_method=True) + + @staticmethod + def DeleteTaskPushNotificationConfig(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/a2a.v1.A2AService/DeleteTaskPushNotificationConfig', + a2a__pb2.DeleteTaskPushNotificationConfigRequest.SerializeToString, + google_dot_protobuf_dot_empty__pb2.Empty.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) diff --git a/src/a2a/types.py b/src/a2a/types.py index 373b579b..9173ecb6 100644 --- a/src/a2a/types.py +++ b/src/a2a/types.py @@ -208,6 +208,65 @@ class DataPart(BaseModel): """ +class DeleteTaskPushNotificationConfigParams(BaseModel): + """ + Parameters for removing pushNotificationConfiguration associated with a Task + """ + + id: str + """ + Task id. + """ + metadata: dict[str, Any] | None = None + pushNotificationConfigId: str + + +class DeleteTaskPushNotificationConfigRequest(BaseModel): + """ + JSON-RPC request model for the 'tasks/pushNotificationConfig/delete' method. + """ + + id: str | int + """ + An identifier established by the Client that MUST contain a String, Number. + Numbers SHOULD NOT contain fractional parts. + """ + jsonrpc: Literal['2.0'] = '2.0' + """ + Specifies the version of the JSON-RPC protocol. MUST be exactly "2.0". + """ + method: Literal['tasks/pushNotificationConfig/delete'] = ( + 'tasks/pushNotificationConfig/delete' + ) + """ + A String containing the name of the method to be invoked. + """ + params: DeleteTaskPushNotificationConfigParams + """ + A Structured value that holds the parameter values to be used during the invocation of the method. + """ + + +class DeleteTaskPushNotificationConfigSuccessResponse(BaseModel): + """ + JSON-RPC success response model for the 'tasks/pushNotificationConfig/delete' method. + """ + + id: str | int | None = None + """ + An identifier established by the Client that MUST contain a String, Number. + Numbers SHOULD NOT contain fractional parts. + """ + jsonrpc: Literal['2.0'] = '2.0' + """ + Specifies the version of the JSON-RPC protocol. MUST be exactly "2.0". + """ + result: None + """ + The result object on success. + """ + + class FileBase(BaseModel): """ Represents the base entity for FileParts @@ -261,6 +320,19 @@ class FileWithUri(BaseModel): """ +class GetTaskPushNotificationConfigParams(BaseModel): + """ + Parameters for fetching a pushNotificationConfiguration associated with a Task + """ + + id: str + """ + Task id. + """ + metadata: dict[str, Any] | None = None + pushNotificationConfigId: str | None = None + + class HTTPAuthSecurityScheme(BaseModel): """ HTTP Authentication security scheme. @@ -488,6 +560,44 @@ class JSONRPCSuccessResponse(BaseModel): """ +class ListTaskPushNotificationConfigParams(BaseModel): + """ + Parameters for getting list of pushNotificationConfigurations associated with a Task + """ + + id: str + """ + Task id. + """ + metadata: dict[str, Any] | None = None + + +class ListTaskPushNotificationConfigRequest(BaseModel): + """ + JSON-RPC request model for the 'tasks/pushNotificationConfig/list' method. + """ + + id: str | int + """ + An identifier established by the Client that MUST contain a String, Number. + Numbers SHOULD NOT contain fractional parts. + """ + jsonrpc: Literal['2.0'] = '2.0' + """ + Specifies the version of the JSON-RPC protocol. MUST be exactly "2.0". + """ + method: Literal['tasks/pushNotificationConfig/list'] = ( + 'tasks/pushNotificationConfig/list' + ) + """ + A String containing the name of the method to be invoked. + """ + params: ListTaskPushNotificationConfigParams + """ + A Structured value that holds the parameter values to be used during the invocation of the method. + """ + + class Role(str, Enum): """ Message sender's role @@ -910,9 +1020,10 @@ class GetTaskPushNotificationConfigRequest(BaseModel): """ A String containing the name of the method to be invoked. """ - params: TaskIdParams + params: TaskIdParams | GetTaskPushNotificationConfigParams """ A Structured value that holds the parameter values to be used during the invocation of the method. + TaskIdParams type is deprecated for this method """ @@ -990,6 +1101,26 @@ class JSONRPCErrorResponse(BaseModel): """ +class ListTaskPushNotificationConfigSuccessResponse(BaseModel): + """ + JSON-RPC success response model for the 'tasks/pushNotificationConfig/list' method. + """ + + id: str | int | None = None + """ + An identifier established by the Client that MUST contain a String, Number. + Numbers SHOULD NOT contain fractional parts. + """ + jsonrpc: Literal['2.0'] = '2.0' + """ + Specifies the version of the JSON-RPC protocol. MUST be exactly "2.0". + """ + result: list[TaskPushNotificationConfig] + """ + The result object on success. + """ + + class MessageSendConfiguration(BaseModel): """ Configuration for the send message request. @@ -1120,6 +1251,15 @@ class Artifact(BaseModel): """ +class DeleteTaskPushNotificationConfigResponse( + RootModel[JSONRPCErrorResponse | DeleteTaskPushNotificationConfigSuccessResponse] +): + root: JSONRPCErrorResponse | DeleteTaskPushNotificationConfigSuccessResponse + """ + JSON-RPC response for the 'tasks/pushNotificationConfig/delete' method. + """ + + class GetTaskPushNotificationConfigResponse( RootModel[JSONRPCErrorResponse | GetTaskPushNotificationConfigSuccessResponse] ): @@ -1129,6 +1269,15 @@ class GetTaskPushNotificationConfigResponse( """ +class ListTaskPushNotificationConfigResponse( + RootModel[JSONRPCErrorResponse | ListTaskPushNotificationConfigSuccessResponse] +): + root: JSONRPCErrorResponse | ListTaskPushNotificationConfigSuccessResponse + """ + JSON-RPC response for the 'tasks/pushNotificationConfig/list' method. + """ + + class Message(BaseModel): """ Represents a single message exchanged between user and agent. @@ -1375,6 +1524,8 @@ class A2ARequest( | SetTaskPushNotificationConfigRequest | GetTaskPushNotificationConfigRequest | TaskResubscriptionRequest + | ListTaskPushNotificationConfigRequest + | DeleteTaskPushNotificationConfigRequest ] ): root: ( @@ -1385,6 +1536,8 @@ class A2ARequest( | SetTaskPushNotificationConfigRequest | GetTaskPushNotificationConfigRequest | TaskResubscriptionRequest + | ListTaskPushNotificationConfigRequest + | DeleteTaskPushNotificationConfigRequest ) """ A2A supported request types From 5f7e025f71b78b14f53b44466af7d2a5aa425d05 Mon Sep 17 00:00:00 2001 From: Holt Skinner Date: Mon, 16 Jun 2025 11:36:00 -0500 Subject: [PATCH 2/2] Update types --- src/a2a/client/grpc_client.py | 8 ++++---- src/a2a/server/request_handlers/grpc_handler.py | 16 ++++++++-------- src/a2a/utils/proto_utils.py | 6 +++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/a2a/client/grpc_client.py b/src/a2a/client/grpc_client.py index d9f14b7f..a0fbc517 100644 --- a/src/a2a/client/grpc_client.py +++ b/src/a2a/client/grpc_client.py @@ -159,8 +159,8 @@ async def set_task_callback( Returns: A `TaskPushNotificationConfig` object containing the config. """ - config = await self.stub.CreateTaskPushNotification( - a2a_pb2.CreateTaskPushNotificationRequest( + config = await self.stub.CreateTaskPushNotificationConfig( + a2a_pb2.CreateTaskPushNotificationConfigRequest( parent='', config_id='', config=proto_utils.ToProto.task_push_notification_config( @@ -182,8 +182,8 @@ async def get_task_callback( Returns: A `TaskPushNotificationConfig` object containing the configuration. """ - config = await self.stub.GetTaskPushNotification( - a2a_pb2.GetTaskPushNotificationRequest( + config = await self.stub.GetTaskPushNotificationConfig( + a2a_pb2.GetTaskPushNotificationConfigRequest( name=f'tasks/{request.id}/pushNotification/undefined', ) ) diff --git a/src/a2a/server/request_handlers/grpc_handler.py b/src/a2a/server/request_handlers/grpc_handler.py index b8c21070..74f7405c 100644 --- a/src/a2a/server/request_handlers/grpc_handler.py +++ b/src/a2a/server/request_handlers/grpc_handler.py @@ -55,7 +55,7 @@ def __init__( self, agent_card: AgentCard, request_handler: RequestHandler, - context_builder: CallContextBuilder | None = None + context_builder: CallContextBuilder | None = None, ): """Initializes the GrpcHandler. @@ -198,12 +198,12 @@ async def TaskSubscription( except ServerError as e: await self.abort_context(e, context) - async def GetTaskPushNotification( + async def GetTaskPushNotificationConfig( self, - request: a2a_pb2.GetTaskPushNotificationRequest, + request: a2a_pb2.GetTaskPushNotificationConfigRequest, context: grpc.aio.ServicerContext, ) -> a2a_pb2.TaskPushNotificationConfig: - """Handles the 'GetTaskPushNotification' gRPC method. + """Handles the 'GetTaskPushNotificationConfig' gRPC method. Args: request: The incoming `GetTaskPushNotificationConfigRequest` object. @@ -229,17 +229,17 @@ async def GetTaskPushNotification( lambda self: self.agent_card.capabilities.pushNotifications, 'Push notifications are not supported by the agent', ) - async def CreateTaskPushNotification( + async def CreateTaskPushNotificationConfig( self, - request: a2a_pb2.CreateTaskPushNotificationRequest, + request: a2a_pb2.CreateTaskPushNotificationConfigRequest, context: grpc.aio.ServicerContext, ) -> a2a_pb2.TaskPushNotificationConfig: - """Handles the 'CreateTaskPushNotification' gRPC method. + """Handles the 'CreateTaskPushNotificationConfig' gRPC method. Requires the agent to support push notifications. Args: - request: The incoming `CreateTaskPushNotificationRequest` object. + request: The incoming `CreateTaskPushNotificationConfigRequest` object. context: Context provided by the server. Returns: diff --git a/src/a2a/utils/proto_utils.py b/src/a2a/utils/proto_utils.py index e1dddc39..51a4be3d 100644 --- a/src/a2a/utils/proto_utils.py +++ b/src/a2a/utils/proto_utils.py @@ -589,12 +589,12 @@ def task_id_params( request: ( a2a_pb2.CancelTaskRequest | a2a_pb2.TaskSubscriptionRequest - | a2a_pb2.GetTaskPushNotificationRequest + | a2a_pb2.GetTaskPushNotificationConfigRequest ), ) -> types.TaskIdParams: # This is currently incomplete until the core sdk supports multiple # configs for a single task. - if isinstance(request, a2a_pb2.GetTaskPushNotificationRequest): + if isinstance(request, a2a_pb2.GetTaskPushNotificationConfigRequest): m = re.match(_TASK_PUSH_CONFIG_NAME_MATCH, request.name) if not m: raise ServerError( @@ -615,7 +615,7 @@ def task_id_params( @classmethod def task_push_notification_config( cls, - request: a2a_pb2.CreateTaskPushNotificationRequest, + request: a2a_pb2.CreateTaskPushNotificationConfigRequest, ) -> types.TaskPushNotificationConfig: m = re.match(_TASK_NAME_MATCH, request.parent) if not m: