Skip to content

Commit d06be0d

Browse files
committed
Fix a typing issue I introduced
Change-Id: I93d2e4accede9e93bcc67bb5b74c9b371ae440a7
1 parent 49b8d7b commit d06be0d

File tree

5 files changed

+102
-108
lines changed

5 files changed

+102
-108
lines changed

examples/google_adk/calendar_agent/adk_agent_executor.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,32 @@
11
import asyncio
22
import logging
3-
4-
from collections.abc import AsyncGenerator
53
from collections import namedtuple
4+
from collections.abc import AsyncGenerator
65
from typing import Dict
6+
from urllib.parse import parse_qs, urlparse
7+
8+
from google.adk import Runner
9+
from google.adk.auth import AuthConfig
10+
from google.adk.events import Event
11+
from google.genai import types
712

8-
from a2a.server.agent_execution.context import RequestContext
913
from a2a.server.agent_execution import AgentExecutor
14+
from a2a.server.agent_execution.context import RequestContext
1015
from a2a.server.events.event_queue import EventQueue
16+
from a2a.server.tasks import TaskUpdater
1117
from a2a.types import (
1218
AgentCard,
1319
FilePart,
1420
FileWithBytes,
1521
FileWithUri,
1622
Part,
17-
UnsupportedOperationError,
1823
TaskState,
1924
TextPart,
25+
UnsupportedOperationError,
2026
)
21-
from a2a.utils import TaskUpdater
2227
from a2a.utils.errors import ServerError
2328
from a2a.utils.message import new_agent_text_message
2429

25-
from google.adk import Runner
26-
from google.adk.events import Event
27-
from google.adk.auth import AuthConfig
28-
from google.genai import types
29-
from urllib.parse import urlparse, parse_qs
30-
3130
logger = logging.getLogger(__name__)
3231
logger.setLevel(logging.DEBUG)
3332

src/a2a/server/tasks/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from a2a.server.tasks.inmemory_task_store import InMemoryTaskStore
2+
from a2a.server.tasks.result_aggregator import ResultAggregator
23
from a2a.server.tasks.task_manager import TaskManager
34
from a2a.server.tasks.task_store import TaskStore
4-
from a2a.server.tasks.result_aggregator import ResultAggregator
5-
5+
from a2a.server.tasks.task_updater import TaskUpdater
66

7-
__all__ = ['InMemoryTaskStore', 'TaskManager', 'TaskStore', 'ResultAggregator']
7+
__all__ = ['InMemoryTaskStore', 'TaskManager', 'TaskStore', 'ResultAggregator', 'TaskUpdater']
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import uuid
2+
3+
from a2a.server.events import EventQueue
4+
from a2a.types import (Artifact, Message, Part, Role, TaskArtifactUpdateEvent,
5+
TaskState, TaskStatus, TaskStatusUpdateEvent)
6+
7+
8+
class TaskUpdater:
9+
"""Helper class for publishing updates to a task."""
10+
11+
def __init__(self, event_queue: EventQueue, task_id: str, context_id: str):
12+
self.event_queue = event_queue
13+
self.task_id = task_id
14+
self.context_id = context_id
15+
16+
def update_status(
17+
self, state: TaskState, message: Message | None = None, final=False
18+
):
19+
"""Update the status of the task."""
20+
self.event_queue.enqueue_event(
21+
TaskStatusUpdateEvent(
22+
taskId=self.task_id,
23+
contextId=self.context_id,
24+
final=final,
25+
status=TaskStatus(
26+
state=state,
27+
message=message,
28+
),
29+
)
30+
)
31+
32+
def add_artifact(
33+
self,
34+
parts: list[Part],
35+
artifact_id=str(uuid.uuid4()),
36+
name: str | None = None,
37+
):
38+
"""Add an artifact to the task."""
39+
self.event_queue.enqueue_event(
40+
TaskArtifactUpdateEvent(
41+
taskId=self.task_id,
42+
contextId=self.context_id,
43+
artifact=Artifact(
44+
artifactId=artifact_id,
45+
name=name,
46+
parts=parts,
47+
),
48+
)
49+
)
50+
51+
def complete(self, message: Message | None = None):
52+
"""Mark the task as completed."""
53+
self.update_status(
54+
TaskState.completed,
55+
message=message,
56+
final=True,
57+
)
58+
59+
def submit(self, message: Message | None = None):
60+
"""Mark the task as submitted."""
61+
self.update_status(
62+
TaskState.submitted,
63+
message=message,
64+
)
65+
66+
def start_work(self, message: Message | None = None):
67+
"""Mark the task as working."""
68+
self.update_status(
69+
TaskState.working,
70+
message=message,
71+
)
72+
73+
def new_agent_message(
74+
self, parts: list[Part], final=False, metadata=None
75+
) -> Message:
76+
"""Create a new message for the task."""
77+
return Message(
78+
role=Role.agent,
79+
taskId=self.task_id,
80+
contextId=self.context_id,
81+
messageId=str(uuid.uuid4()),
82+
metadata=metadata,
83+
final=final,
84+
parts=parts,
85+
)

src/a2a/utils/__init__.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
get_text_parts,
1010
new_agent_text_message,
1111
)
12-
from a2a.utils.task import TaskUpdater, new_task
13-
12+
from a2a.utils.task import new_task
1413

1514
__all__ = [
1615
'append_artifact_to_task',
@@ -21,5 +20,4 @@
2120
'new_agent_text_message',
2221
'new_task',
2322
'new_text_artifact',
24-
'TaskUpdater',
2523
]

src/a2a/utils/task.py

Lines changed: 3 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,8 @@
11
import uuid
22

3-
from a2a.types import (
4-
Artifact,
5-
Message,
6-
Part,
7-
Role,
8-
Task,
9-
TaskArtifactUpdateEvent,
10-
TaskState,
11-
TaskStatus,
12-
TaskStatusUpdateEvent,
13-
)
3+
from a2a.types import (Artifact, Message, Part, Role, Task,
4+
TaskArtifactUpdateEvent, TaskState, TaskStatus,
5+
TaskStatusUpdateEvent)
146

157

168
def new_task(request: Message) -> Task:
@@ -22,83 +14,3 @@ def new_task(request: Message) -> Task:
2214
),
2315
history=[request],
2416
)
25-
26-
27-
class TaskUpdater:
28-
"""Helper class for publishing updates to a task."""
29-
30-
def __init__(self, event_queue: EventQueue, task_id: str, context_id: str):
31-
self.event_queue = event_queue
32-
self.task_id = task_id
33-
self.context_id = context_id
34-
35-
def update_status(
36-
self, state: TaskState, message: Message | None = None, final=False
37-
):
38-
"""Update the status of the task."""
39-
self.event_queue.enqueue_event(
40-
TaskStatusUpdateEvent(
41-
taskId=self.task_id,
42-
contextId=self.context_id,
43-
final=final,
44-
status=TaskStatus(
45-
state=state,
46-
message=message,
47-
),
48-
)
49-
)
50-
51-
def add_artifact(
52-
self,
53-
parts: list[Part],
54-
artifact_id=str(uuid.uuid4()),
55-
name: str | None = None,
56-
):
57-
"""Add an artifact to the task."""
58-
self.event_queue.enqueue_event(
59-
TaskArtifactUpdateEvent(
60-
taskId=self.task_id,
61-
contextId=self.context_id,
62-
artifact=Artifact(
63-
artifactId=artifact_id,
64-
name=name,
65-
parts=parts,
66-
),
67-
)
68-
)
69-
70-
def complete(self, message: Message | None = None):
71-
"""Mark the task as completed."""
72-
self.update_status(
73-
TaskState.completed,
74-
message=message,
75-
final=True,
76-
)
77-
78-
def submit(self, message: Message | None = None):
79-
"""Mark the task as submitted."""
80-
self.update_status(
81-
TaskState.submitted,
82-
message=message,
83-
)
84-
85-
def start_work(self, message: Message | None = None):
86-
"""Mark the task as working."""
87-
self.update_status(
88-
TaskState.working,
89-
message=message,
90-
)
91-
92-
def new_agent_message(
93-
self, parts: list[Part], final=False, metadata=None
94-
) -> Message:
95-
"""Create a new message for the task."""
96-
return Message(
97-
role=Role.agent,
98-
taskId=self.task_id,
99-
contextId=self.context_id,
100-
messageId=str(uuid.uuid4()),
101-
metadata=metadata,
102-
final=final,
103-
parts=parts,
104-
)

0 commit comments

Comments
 (0)