Skip to content

Commit 19336df

Browse files
authored
Merge pull request #194 from esnible/update-contact-extractor
bug: Modify contact extractor example for a2a-sdk refactor
2 parents 5296fa8 + 5f47c7d commit 19336df

2 files changed

Lines changed: 21 additions & 11 deletions

File tree

a2a/a2a_contact_extractor/__main__.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
import httpx
1111
from a2a.server.apps import A2AStarletteApplication
1212
from a2a.server.request_handlers import DefaultRequestHandler
13-
from a2a.server.tasks import InMemoryPushNotifier, InMemoryTaskStore
13+
from a2a.server.tasks import (
14+
BasePushNotificationSender,
15+
InMemoryPushNotificationConfigStore,
16+
InMemoryTaskStore,
17+
)
1418
from a2a.types import AgentCapabilities, AgentCard, AgentSkill
1519
from dotenv import load_dotenv
1620
from pydantic import BaseModel, EmailStr, Field
@@ -55,10 +59,16 @@ def main(host, port, result_type, instructions):
5559
exit(1)
5660
agent = ExtractorAgent(instructions=instructions, result_type=result_type)
5761
httpx_client = httpx.AsyncClient()
62+
push_notification_config_store = InMemoryPushNotificationConfigStore()
63+
push_notification_sender = BasePushNotificationSender(
64+
httpx_client, config_store=push_notification_config_store
65+
)
66+
5867
request_handler = DefaultRequestHandler(
5968
agent_executor=ExtractorAgentExecutor(agent=agent),
6069
task_store=InMemoryTaskStore(),
61-
push_notifier=InMemoryPushNotifier(httpx_client),
70+
push_config_store=push_notification_config_store,
71+
push_sender=push_notification_sender,
6272
)
6373
server = A2AStarletteApplication(
6474
agent_card=get_agent_card(host, port), http_handler=request_handler

a2a/a2a_contact_extractor/agent_executor.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ async def execute(
3636
task = context.current_task
3737
if not task:
3838
task = new_task(context.message)
39-
event_queue.enqueue_event(task)
39+
await event_queue.enqueue_event(task)
4040

41-
async for item in self.agent.stream(query, task.contextId):
41+
async for item in self.agent.stream(query, task.context_id):
4242
is_task_complete = item["is_task_complete"]
4343
require_user_input = item["require_user_input"]
4444
# content = item["content"]
@@ -48,7 +48,7 @@ async def execute(
4848
f"Stream item received: complete={is_task_complete}, require_input={require_user_input}, content_len={len(content)}"
4949
)
5050

51-
agent_outcome = await self.agent.invoke(query, task.contextId)
51+
agent_outcome = await self.agent.invoke(query, task.context_id)
5252
is_task_complete = agent_outcome["is_task_complete"]
5353
require_user_input = not is_task_complete
5454
content = agent_outcome.get("text_parts", [])
@@ -77,20 +77,20 @@ async def execute(
7777
state=TaskState.input_required,
7878
message=new_agent_text_message(
7979
content,
80-
task.contextId,
80+
task.context_id,
8181
task.id,
8282
),
8383
),
8484
final=True,
85-
contextId=task.contextId,
85+
contextId=task.context_id,
8686
taskId=task.id,
8787
)
8888
)
8989
elif is_task_complete:
9090
event_queue.enqueue_event(
9191
TaskArtifactUpdateEvent(
9292
append=False,
93-
contextId=task.contextId,
93+
contextId=task.context_id,
9494
taskId=task.id,
9595
lastChunk=True,
9696
artifact=artifact,
@@ -100,7 +100,7 @@ async def execute(
100100
TaskStatusUpdateEvent(
101101
status=TaskStatus(state=TaskState.completed),
102102
final=True,
103-
contextId=task.contextId,
103+
contextId=task.context_id,
104104
taskId=task.id,
105105
)
106106
)
@@ -111,12 +111,12 @@ async def execute(
111111
state=TaskState.working,
112112
message=new_agent_text_message(
113113
"Analyzing your text...",
114-
task.contextId,
114+
task.context_id,
115115
task.id,
116116
),
117117
),
118118
final=False,
119-
contextId=task.contextId,
119+
contextId=task.context_id,
120120
taskId=task.id,
121121
)
122122
)

0 commit comments

Comments
 (0)