Skip to content

Commit cc58fa5

Browse files
committed
updates for durable execution
1 parent 08d099d commit cc58fa5

7 files changed

Lines changed: 28 additions & 21 deletions

File tree

src/google/adk/a2a/converters/event_converter.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
from typing import Dict
2323
from typing import List
2424
from typing import Optional
25-
import uuid
25+
26+
from google.adk.platform import uuid as platform_uuid
2627

2728
from a2a.server.events import Event as A2AEvent
2829
from a2a.types import DataPart
@@ -254,7 +255,7 @@ def convert_a2a_task_to_event(
254255
invocation_id=(
255256
invocation_context.invocation_id
256257
if invocation_context
257-
else str(uuid.uuid4())
258+
else platform_uuid.new_uuid()
258259
),
259260
author=author or "a2a agent",
260261
branch=invocation_context.branch if invocation_context else None,
@@ -299,7 +300,7 @@ def convert_a2a_message_to_event(
299300
invocation_id=(
300301
invocation_context.invocation_id
301302
if invocation_context
302-
else str(uuid.uuid4())
303+
else platform_uuid.new_uuid()
303304
),
304305
author=author or "a2a agent",
305306
branch=invocation_context.branch if invocation_context else None,
@@ -349,7 +350,7 @@ def convert_a2a_message_to_event(
349350
invocation_id=(
350351
invocation_context.invocation_id
351352
if invocation_context
352-
else str(uuid.uuid4())
353+
else platform_uuid.new_uuid()
353354
),
354355
author=author or "a2a agent",
355356
branch=invocation_context.branch if invocation_context else None,
@@ -408,7 +409,7 @@ def convert_event_to_a2a_message(
408409

409410
if output_parts:
410411
return Message(
411-
message_id=str(uuid.uuid4()), role=role, parts=output_parts
412+
message_id=platform_uuid.new_uuid(), role=role, parts=output_parts
412413
)
413414

414415
except Exception as e:
@@ -449,7 +450,7 @@ def _create_error_status_event(
449450
status=TaskStatus(
450451
state=TaskState.failed,
451452
message=Message(
452-
message_id=str(uuid.uuid4()),
453+
message_id=platform_uuid.new_uuid(),
453454
role=Role.agent,
454455
parts=[TextPart(text=error_message)],
455456
metadata={

src/google/adk/agents/invocation_context.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616

1717
from typing import Any
1818
from typing import Optional
19-
import uuid
19+
20+
from google.adk.platform import uuid as platform_uuid
2021

2122
from google.genai import types
2223
from pydantic import BaseModel
@@ -409,4 +410,4 @@ def _find_matching_function_call(
409410

410411

411412
def new_invocation_context_id() -> str:
412-
return "e-" + str(uuid.uuid4())
413+
return "e-" + platform_uuid.new_uuid()

src/google/adk/artifacts/base_artifact_service.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
from typing import Any
2020
from typing import Optional
2121

22+
from google.adk.platform import time as platform_time
23+
2224
from google.genai import types
2325
from pydantic import alias_generators
2426
from pydantic import BaseModel
@@ -47,7 +49,7 @@ class ArtifactVersion(BaseModel):
4749
description="Optional user-supplied metadata stored with the artifact.",
4850
)
4951
create_time: float = Field(
50-
default_factory=lambda: datetime.now().timestamp(),
52+
default_factory=lambda: platform_time.get_time(),
5153
description=(
5254
"Unix timestamp (seconds) when the version record was created."
5355
),

src/google/adk/flows/llm_flows/functions.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
from typing import Dict
3030
from typing import Optional
3131
from typing import TYPE_CHECKING
32-
import uuid
3332

33+
from google.adk.platform import uuid as platform_uuid
3434
from google.genai import types
3535

3636
from ...agents.active_streaming_tool import ActiveStreamingTool
@@ -175,7 +175,7 @@ def run_async_tool_in_new_loop():
175175

176176

177177
def generate_client_function_call_id() -> str:
178-
return f'{AF_FUNCTION_CALL_ID_PREFIX}{uuid.uuid4()}'
178+
return f'{AF_FUNCTION_CALL_ID_PREFIX}{platform_uuid.new_uuid()}'
179179

180180

181181
def populate_client_function_call_id(model_response_event: Event) -> None:

src/google/adk/sessions/sqlite_session_service.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
import aiosqlite
3030
from typing_extensions import override
3131

32+
from google.adk.platform import time as platform_time
33+
from google.adk.platform import uuid as platform_uuid
34+
3235
from . import _session_util
3336
from ..errors.already_exists_error import AlreadyExistsError
3437
from ..events.event import Event
@@ -165,8 +168,8 @@ async def create_session(
165168
if session_id:
166169
session_id = session_id.strip()
167170
if not session_id:
168-
session_id = str(uuid.uuid4())
169-
now = time.time()
171+
session_id = platform_uuid.new_uuid()
172+
now = platform_time.get_time()
170173

171174
async with self._get_db_connection() as db:
172175
# Check if session_id already exists

tests/unittests/a2a/converters/test_event_converter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,7 @@ def test_convert_a2a_task_to_event_no_message(self):
742742
assert result.branch == "test-branch"
743743
assert result.invocation_id == "test-invocation-id"
744744

745-
@patch("google.adk.a2a.converters.event_converter.uuid.uuid4")
745+
@patch("google.adk.a2a.converters.event_converter.platform_uuid.new_uuid")
746746
def test_convert_a2a_task_to_event_default_author(self, mock_uuid):
747747
"""Test converting A2A task with default author and no invocation context."""
748748
from google.adk.a2a.converters.event_converter import convert_a2a_task_to_event
@@ -974,7 +974,7 @@ def test_convert_a2a_message_to_event_missing_tool_id(self):
974974
# Parts will be empty since conversion returned None
975975
assert len(result.content.parts) == 0
976976

977-
@patch("google.adk.a2a.converters.event_converter.uuid.uuid4")
977+
@patch("google.adk.a2a.converters.event_converter.platform_uuid.new_uuid")
978978
def test_convert_a2a_message_to_event_default_author(self, mock_uuid):
979979
"""Test conversion with default author and no invocation context."""
980980
from google.adk.a2a.converters.event_converter import convert_a2a_message_to_event

tests/unittests/artifacts/test_artifact_service.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -418,9 +418,9 @@ async def test_list_artifact_versions_and_get_artifact_version(
418418
]
419419

420420
with patch(
421-
"google.adk.artifacts.base_artifact_service.datetime"
422-
) as mock_datetime:
423-
mock_datetime.now.return_value = FIXED_DATETIME
421+
"google.adk.artifacts.base_artifact_service.platform_time"
422+
) as mock_platform_time:
423+
mock_platform_time.get_time.return_value = FIXED_DATETIME.timestamp()
424424

425425
for i in range(4):
426426
custom_metadata = {"key": "value" + str(i)}
@@ -505,9 +505,9 @@ async def test_list_artifact_versions_with_user_prefix(
505505
]
506506

507507
with patch(
508-
"google.adk.artifacts.base_artifact_service.datetime"
509-
) as mock_datetime:
510-
mock_datetime.now.return_value = FIXED_DATETIME
508+
"google.adk.artifacts.base_artifact_service.platform_time"
509+
) as mock_platform_time:
510+
mock_platform_time.get_time.return_value = FIXED_DATETIME.timestamp()
511511

512512
for i in range(4):
513513
custom_metadata = {"key": "value" + str(i)}

0 commit comments

Comments
 (0)