agentex-sdk 0.1.0a6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agentex/__init__.py +103 -0
- agentex/_base_client.py +1992 -0
- agentex/_client.py +506 -0
- agentex/_compat.py +219 -0
- agentex/_constants.py +14 -0
- agentex/_exceptions.py +108 -0
- agentex/_files.py +123 -0
- agentex/_models.py +829 -0
- agentex/_qs.py +150 -0
- agentex/_resource.py +43 -0
- agentex/_response.py +830 -0
- agentex/_streaming.py +333 -0
- agentex/_types.py +219 -0
- agentex/_utils/__init__.py +57 -0
- agentex/_utils/_logs.py +25 -0
- agentex/_utils/_proxy.py +65 -0
- agentex/_utils/_reflection.py +42 -0
- agentex/_utils/_resources_proxy.py +24 -0
- agentex/_utils/_streams.py +12 -0
- agentex/_utils/_sync.py +86 -0
- agentex/_utils/_transform.py +447 -0
- agentex/_utils/_typing.py +151 -0
- agentex/_utils/_utils.py +422 -0
- agentex/_version.py +4 -0
- agentex/lib/.keep +4 -0
- agentex/lib/__init__.py +0 -0
- agentex/lib/adk/__init__.py +41 -0
- agentex/lib/adk/_modules/__init__.py +0 -0
- agentex/lib/adk/_modules/acp.py +247 -0
- agentex/lib/adk/_modules/agent_task_tracker.py +176 -0
- agentex/lib/adk/_modules/agents.py +77 -0
- agentex/lib/adk/_modules/events.py +141 -0
- agentex/lib/adk/_modules/messages.py +285 -0
- agentex/lib/adk/_modules/state.py +291 -0
- agentex/lib/adk/_modules/streaming.py +75 -0
- agentex/lib/adk/_modules/tasks.py +124 -0
- agentex/lib/adk/_modules/tracing.py +194 -0
- agentex/lib/adk/providers/__init__.py +9 -0
- agentex/lib/adk/providers/_modules/__init__.py +0 -0
- agentex/lib/adk/providers/_modules/litellm.py +232 -0
- agentex/lib/adk/providers/_modules/openai.py +416 -0
- agentex/lib/adk/providers/_modules/sgp.py +85 -0
- agentex/lib/adk/utils/__init__.py +5 -0
- agentex/lib/adk/utils/_modules/__init__.py +0 -0
- agentex/lib/adk/utils/_modules/templating.py +94 -0
- agentex/lib/cli/__init__.py +0 -0
- agentex/lib/cli/commands/__init__.py +0 -0
- agentex/lib/cli/commands/agents.py +328 -0
- agentex/lib/cli/commands/init.py +227 -0
- agentex/lib/cli/commands/main.py +33 -0
- agentex/lib/cli/commands/secrets.py +169 -0
- agentex/lib/cli/commands/tasks.py +118 -0
- agentex/lib/cli/commands/uv.py +133 -0
- agentex/lib/cli/handlers/__init__.py +0 -0
- agentex/lib/cli/handlers/agent_handlers.py +160 -0
- agentex/lib/cli/handlers/cleanup_handlers.py +186 -0
- agentex/lib/cli/handlers/deploy_handlers.py +351 -0
- agentex/lib/cli/handlers/run_handlers.py +452 -0
- agentex/lib/cli/handlers/secret_handlers.py +670 -0
- agentex/lib/cli/templates/default/.dockerignore.j2 +43 -0
- agentex/lib/cli/templates/default/Dockerfile-uv.j2 +42 -0
- agentex/lib/cli/templates/default/Dockerfile.j2 +42 -0
- agentex/lib/cli/templates/default/README.md.j2 +193 -0
- agentex/lib/cli/templates/default/deploy/example.yaml.j2 +55 -0
- agentex/lib/cli/templates/default/manifest.yaml.j2 +116 -0
- agentex/lib/cli/templates/default/project/acp.py.j2 +29 -0
- agentex/lib/cli/templates/default/pyproject.toml.j2 +33 -0
- agentex/lib/cli/templates/default/requirements.txt.j2 +5 -0
- agentex/lib/cli/templates/deploy/Screenshot 2025-03-19 at 10.36.57/342/200/257AM.png +0 -0
- agentex/lib/cli/templates/deploy/example.yaml.j2 +55 -0
- agentex/lib/cli/templates/sync/.dockerignore.j2 +43 -0
- agentex/lib/cli/templates/sync/Dockerfile-uv.j2 +42 -0
- agentex/lib/cli/templates/sync/Dockerfile.j2 +42 -0
- agentex/lib/cli/templates/sync/README.md.j2 +293 -0
- agentex/lib/cli/templates/sync/deploy/example.yaml.j2 +55 -0
- agentex/lib/cli/templates/sync/manifest.yaml.j2 +116 -0
- agentex/lib/cli/templates/sync/project/acp.py.j2 +26 -0
- agentex/lib/cli/templates/sync/pyproject.toml.j2 +33 -0
- agentex/lib/cli/templates/sync/requirements.txt.j2 +5 -0
- agentex/lib/cli/templates/temporal/.dockerignore.j2 +43 -0
- agentex/lib/cli/templates/temporal/Dockerfile-uv.j2 +48 -0
- agentex/lib/cli/templates/temporal/Dockerfile.j2 +48 -0
- agentex/lib/cli/templates/temporal/README.md.j2 +316 -0
- agentex/lib/cli/templates/temporal/deploy/example.yaml.j2 +55 -0
- agentex/lib/cli/templates/temporal/manifest.yaml.j2 +137 -0
- agentex/lib/cli/templates/temporal/project/acp.py.j2 +30 -0
- agentex/lib/cli/templates/temporal/project/run_worker.py.j2 +33 -0
- agentex/lib/cli/templates/temporal/project/workflow.py.j2 +66 -0
- agentex/lib/cli/templates/temporal/pyproject.toml.j2 +34 -0
- agentex/lib/cli/templates/temporal/requirements.txt.j2 +5 -0
- agentex/lib/cli/utils/cli_utils.py +14 -0
- agentex/lib/cli/utils/credential_utils.py +103 -0
- agentex/lib/cli/utils/exceptions.py +6 -0
- agentex/lib/cli/utils/kubectl_utils.py +135 -0
- agentex/lib/cli/utils/kubernetes_secrets_utils.py +185 -0
- agentex/lib/core/__init__.py +0 -0
- agentex/lib/core/adapters/__init__.py +0 -0
- agentex/lib/core/adapters/llm/__init__.py +1 -0
- agentex/lib/core/adapters/llm/adapter_litellm.py +46 -0
- agentex/lib/core/adapters/llm/adapter_sgp.py +55 -0
- agentex/lib/core/adapters/llm/port.py +24 -0
- agentex/lib/core/adapters/streams/adapter_redis.py +128 -0
- agentex/lib/core/adapters/streams/port.py +50 -0
- agentex/lib/core/clients/__init__.py +1 -0
- agentex/lib/core/clients/temporal/__init__.py +0 -0
- agentex/lib/core/clients/temporal/temporal_client.py +181 -0
- agentex/lib/core/clients/temporal/types.py +47 -0
- agentex/lib/core/clients/temporal/utils.py +56 -0
- agentex/lib/core/services/__init__.py +0 -0
- agentex/lib/core/services/adk/__init__.py +0 -0
- agentex/lib/core/services/adk/acp/__init__.py +0 -0
- agentex/lib/core/services/adk/acp/acp.py +210 -0
- agentex/lib/core/services/adk/agent_task_tracker.py +85 -0
- agentex/lib/core/services/adk/agents.py +43 -0
- agentex/lib/core/services/adk/events.py +61 -0
- agentex/lib/core/services/adk/messages.py +164 -0
- agentex/lib/core/services/adk/providers/__init__.py +0 -0
- agentex/lib/core/services/adk/providers/litellm.py +256 -0
- agentex/lib/core/services/adk/providers/openai.py +723 -0
- agentex/lib/core/services/adk/providers/sgp.py +99 -0
- agentex/lib/core/services/adk/state.py +120 -0
- agentex/lib/core/services/adk/streaming.py +262 -0
- agentex/lib/core/services/adk/tasks.py +69 -0
- agentex/lib/core/services/adk/tracing.py +36 -0
- agentex/lib/core/services/adk/utils/__init__.py +0 -0
- agentex/lib/core/services/adk/utils/templating.py +58 -0
- agentex/lib/core/temporal/__init__.py +0 -0
- agentex/lib/core/temporal/activities/__init__.py +207 -0
- agentex/lib/core/temporal/activities/activity_helpers.py +37 -0
- agentex/lib/core/temporal/activities/adk/__init__.py +0 -0
- agentex/lib/core/temporal/activities/adk/acp/__init__.py +0 -0
- agentex/lib/core/temporal/activities/adk/acp/acp_activities.py +86 -0
- agentex/lib/core/temporal/activities/adk/agent_task_tracker_activities.py +76 -0
- agentex/lib/core/temporal/activities/adk/agents_activities.py +35 -0
- agentex/lib/core/temporal/activities/adk/events_activities.py +50 -0
- agentex/lib/core/temporal/activities/adk/messages_activities.py +94 -0
- agentex/lib/core/temporal/activities/adk/providers/__init__.py +0 -0
- agentex/lib/core/temporal/activities/adk/providers/litellm_activities.py +71 -0
- agentex/lib/core/temporal/activities/adk/providers/openai_activities.py +210 -0
- agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py +42 -0
- agentex/lib/core/temporal/activities/adk/state_activities.py +85 -0
- agentex/lib/core/temporal/activities/adk/streaming_activities.py +33 -0
- agentex/lib/core/temporal/activities/adk/tasks_activities.py +48 -0
- agentex/lib/core/temporal/activities/adk/tracing_activities.py +55 -0
- agentex/lib/core/temporal/activities/adk/utils/__init__.py +0 -0
- agentex/lib/core/temporal/activities/adk/utils/templating_activities.py +41 -0
- agentex/lib/core/temporal/services/__init__.py +0 -0
- agentex/lib/core/temporal/services/temporal_task_service.py +69 -0
- agentex/lib/core/temporal/types/__init__.py +0 -0
- agentex/lib/core/temporal/types/workflow.py +5 -0
- agentex/lib/core/temporal/workers/__init__.py +0 -0
- agentex/lib/core/temporal/workers/worker.py +162 -0
- agentex/lib/core/temporal/workflows/workflow.py +26 -0
- agentex/lib/core/tracing/__init__.py +5 -0
- agentex/lib/core/tracing/processors/agentex_tracing_processor.py +117 -0
- agentex/lib/core/tracing/processors/sgp_tracing_processor.py +119 -0
- agentex/lib/core/tracing/processors/tracing_processor_interface.py +40 -0
- agentex/lib/core/tracing/trace.py +311 -0
- agentex/lib/core/tracing/tracer.py +70 -0
- agentex/lib/core/tracing/tracing_processor_manager.py +62 -0
- agentex/lib/environment_variables.py +87 -0
- agentex/lib/py.typed +0 -0
- agentex/lib/sdk/__init__.py +0 -0
- agentex/lib/sdk/config/__init__.py +0 -0
- agentex/lib/sdk/config/agent_config.py +61 -0
- agentex/lib/sdk/config/agent_manifest.py +219 -0
- agentex/lib/sdk/config/build_config.py +35 -0
- agentex/lib/sdk/config/deployment_config.py +117 -0
- agentex/lib/sdk/config/local_development_config.py +56 -0
- agentex/lib/sdk/config/project_config.py +103 -0
- agentex/lib/sdk/fastacp/__init__.py +3 -0
- agentex/lib/sdk/fastacp/base/base_acp_server.py +406 -0
- agentex/lib/sdk/fastacp/fastacp.py +74 -0
- agentex/lib/sdk/fastacp/impl/agentic_base_acp.py +72 -0
- agentex/lib/sdk/fastacp/impl/sync_acp.py +109 -0
- agentex/lib/sdk/fastacp/impl/temporal_acp.py +97 -0
- agentex/lib/sdk/fastacp/tests/README.md +297 -0
- agentex/lib/sdk/fastacp/tests/conftest.py +307 -0
- agentex/lib/sdk/fastacp/tests/pytest.ini +10 -0
- agentex/lib/sdk/fastacp/tests/run_tests.py +227 -0
- agentex/lib/sdk/fastacp/tests/test_base_acp_server.py +450 -0
- agentex/lib/sdk/fastacp/tests/test_fastacp_factory.py +344 -0
- agentex/lib/sdk/fastacp/tests/test_integration.py +477 -0
- agentex/lib/sdk/state_machine/__init__.py +6 -0
- agentex/lib/sdk/state_machine/noop_workflow.py +21 -0
- agentex/lib/sdk/state_machine/state.py +10 -0
- agentex/lib/sdk/state_machine/state_machine.py +189 -0
- agentex/lib/sdk/state_machine/state_workflow.py +16 -0
- agentex/lib/sdk/utils/__init__.py +0 -0
- agentex/lib/sdk/utils/messages.py +223 -0
- agentex/lib/types/__init__.py +0 -0
- agentex/lib/types/acp.py +94 -0
- agentex/lib/types/agent_configs.py +79 -0
- agentex/lib/types/agent_results.py +29 -0
- agentex/lib/types/credentials.py +34 -0
- agentex/lib/types/fastacp.py +61 -0
- agentex/lib/types/files.py +13 -0
- agentex/lib/types/json_rpc.py +49 -0
- agentex/lib/types/llm_messages.py +354 -0
- agentex/lib/types/task_message_updates.py +171 -0
- agentex/lib/types/tracing.py +34 -0
- agentex/lib/utils/__init__.py +0 -0
- agentex/lib/utils/completions.py +131 -0
- agentex/lib/utils/console.py +14 -0
- agentex/lib/utils/io.py +29 -0
- agentex/lib/utils/iterables.py +14 -0
- agentex/lib/utils/json_schema.py +23 -0
- agentex/lib/utils/logging.py +31 -0
- agentex/lib/utils/mcp.py +17 -0
- agentex/lib/utils/model_utils.py +46 -0
- agentex/lib/utils/parsing.py +15 -0
- agentex/lib/utils/regex.py +6 -0
- agentex/lib/utils/temporal.py +13 -0
- agentex/py.typed +0 -0
- agentex/resources/__init__.py +103 -0
- agentex/resources/agents.py +707 -0
- agentex/resources/events.py +294 -0
- agentex/resources/messages/__init__.py +33 -0
- agentex/resources/messages/batch.py +271 -0
- agentex/resources/messages/messages.py +492 -0
- agentex/resources/spans.py +557 -0
- agentex/resources/states.py +544 -0
- agentex/resources/tasks.py +615 -0
- agentex/resources/tracker.py +384 -0
- agentex/types/__init__.py +56 -0
- agentex/types/acp_type.py +7 -0
- agentex/types/agent.py +29 -0
- agentex/types/agent_list_params.py +13 -0
- agentex/types/agent_list_response.py +10 -0
- agentex/types/agent_rpc_by_name_params.py +21 -0
- agentex/types/agent_rpc_params.py +51 -0
- agentex/types/agent_rpc_params1.py +21 -0
- agentex/types/agent_rpc_response.py +20 -0
- agentex/types/agent_rpc_result.py +90 -0
- agentex/types/agent_task_tracker.py +34 -0
- agentex/types/data_content.py +30 -0
- agentex/types/data_content_param.py +31 -0
- agentex/types/data_delta.py +14 -0
- agentex/types/event.py +29 -0
- agentex/types/event_list_params.py +22 -0
- agentex/types/event_list_response.py +10 -0
- agentex/types/message_author.py +7 -0
- agentex/types/message_create_params.py +18 -0
- agentex/types/message_list_params.py +14 -0
- agentex/types/message_list_response.py +10 -0
- agentex/types/message_style.py +7 -0
- agentex/types/message_update_params.py +18 -0
- agentex/types/messages/__init__.py +8 -0
- agentex/types/messages/batch_create_params.py +16 -0
- agentex/types/messages/batch_create_response.py +10 -0
- agentex/types/messages/batch_update_params.py +16 -0
- agentex/types/messages/batch_update_response.py +10 -0
- agentex/types/shared/__init__.py +3 -0
- agentex/types/shared/task_message_update.py +83 -0
- agentex/types/span.py +36 -0
- agentex/types/span_create_params.py +40 -0
- agentex/types/span_list_params.py +12 -0
- agentex/types/span_list_response.py +10 -0
- agentex/types/span_update_params.py +37 -0
- agentex/types/state.py +25 -0
- agentex/types/state_create_params.py +16 -0
- agentex/types/state_list_params.py +16 -0
- agentex/types/state_list_response.py +10 -0
- agentex/types/state_update_params.py +16 -0
- agentex/types/task.py +23 -0
- agentex/types/task_delete_by_name_response.py +8 -0
- agentex/types/task_delete_response.py +8 -0
- agentex/types/task_list_response.py +10 -0
- agentex/types/task_message.py +33 -0
- agentex/types/task_message_content.py +16 -0
- agentex/types/task_message_content_param.py +17 -0
- agentex/types/task_message_delta.py +16 -0
- agentex/types/text_content.py +53 -0
- agentex/types/text_content_param.py +54 -0
- agentex/types/text_delta.py +14 -0
- agentex/types/tool_request_content.py +36 -0
- agentex/types/tool_request_content_param.py +37 -0
- agentex/types/tool_request_delta.py +18 -0
- agentex/types/tool_response_content.py +36 -0
- agentex/types/tool_response_content_param.py +36 -0
- agentex/types/tool_response_delta.py +18 -0
- agentex/types/tracker_list_params.py +16 -0
- agentex/types/tracker_list_response.py +10 -0
- agentex/types/tracker_update_params.py +19 -0
- agentex_sdk-0.1.0a6.dist-info/METADATA +426 -0
- agentex_sdk-0.1.0a6.dist-info/RECORD +289 -0
- agentex_sdk-0.1.0a6.dist-info/WHEEL +4 -0
- agentex_sdk-0.1.0a6.dist-info/entry_points.txt +2 -0
- agentex_sdk-0.1.0a6.dist-info/licenses/LICENSE +201 -0
@@ -0,0 +1,247 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
from temporalio.common import RetryPolicy
|
5
|
+
|
6
|
+
from agentex import AsyncAgentex
|
7
|
+
from agentex.lib.core.services.adk.acp.acp import ACPService
|
8
|
+
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
|
9
|
+
from agentex.lib.core.temporal.activities.adk.acp.acp_activities import (
|
10
|
+
ACPActivityName,
|
11
|
+
EventSendParams,
|
12
|
+
MessageSendParams,
|
13
|
+
TaskCancelParams,
|
14
|
+
TaskCreateParams,
|
15
|
+
)
|
16
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
17
|
+
from agentex.types.task_message import TaskMessage
|
18
|
+
from agentex.types.task import Task
|
19
|
+
from agentex.lib.utils.logging import make_logger
|
20
|
+
from agentex.lib.utils.temporal import in_temporal_workflow
|
21
|
+
from agentex.types.task_message_content import TaskMessageContent
|
22
|
+
|
23
|
+
logger = make_logger(__name__)
|
24
|
+
|
25
|
+
DEFAULT_RETRY_POLICY = RetryPolicy(maximum_attempts=1)
|
26
|
+
|
27
|
+
|
28
|
+
class ACPModule:
|
29
|
+
"""
|
30
|
+
Module for managing Agent to Client Protocol (ACP) agent operations in Agentex.
|
31
|
+
|
32
|
+
This interface provides high-level methods for interacting with the agent through the ACP.
|
33
|
+
"""
|
34
|
+
|
35
|
+
def __init__(self, acp_service: ACPService | None = None):
|
36
|
+
"""
|
37
|
+
Initialize the ACP module.
|
38
|
+
|
39
|
+
Args:
|
40
|
+
acp_activities (Optional[ACPActivities]): Optional pre-configured ACP activities. If None, will be auto-initialized.
|
41
|
+
"""
|
42
|
+
if acp_service is None:
|
43
|
+
agentex_client = AsyncAgentex()
|
44
|
+
tracer = AsyncTracer(agentex_client)
|
45
|
+
self._acp_service = ACPService(agentex_client=agentex_client, tracer=tracer)
|
46
|
+
else:
|
47
|
+
self._acp_service = acp_service
|
48
|
+
|
49
|
+
async def create_task(
|
50
|
+
self,
|
51
|
+
name: str | None = None,
|
52
|
+
agent_id: str | None = None,
|
53
|
+
agent_name: str | None = None,
|
54
|
+
params: dict[str, Any] | None = None,
|
55
|
+
trace_id: str | None = None,
|
56
|
+
parent_span_id: str | None = None,
|
57
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
58
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
59
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
60
|
+
):
|
61
|
+
"""
|
62
|
+
Create a new task.
|
63
|
+
|
64
|
+
Args:
|
65
|
+
name: The name of the task.
|
66
|
+
agent_id: The ID of the agent to create the task for.
|
67
|
+
agent_name: The name of the agent to create the task for.
|
68
|
+
params: The parameters for the task.
|
69
|
+
start_to_close_timeout: The start to close timeout for the task.
|
70
|
+
heartbeat_timeout: The heartbeat timeout for the task.
|
71
|
+
retry_policy: The retry policy for the task.
|
72
|
+
|
73
|
+
Returns:
|
74
|
+
The task entry.
|
75
|
+
"""
|
76
|
+
if in_temporal_workflow():
|
77
|
+
return await ActivityHelpers.execute_activity(
|
78
|
+
activity_name=ACPActivityName.TASK_CREATE,
|
79
|
+
request=TaskCreateParams(
|
80
|
+
name=name,
|
81
|
+
agent_id=agent_id,
|
82
|
+
agent_name=agent_name,
|
83
|
+
params=params,
|
84
|
+
trace_id=trace_id,
|
85
|
+
parent_span_id=parent_span_id,
|
86
|
+
),
|
87
|
+
response_type=Task,
|
88
|
+
start_to_close_timeout=start_to_close_timeout,
|
89
|
+
retry_policy=retry_policy,
|
90
|
+
heartbeat_timeout=heartbeat_timeout,
|
91
|
+
)
|
92
|
+
else:
|
93
|
+
return await self._acp_service.task_create(
|
94
|
+
name=name,
|
95
|
+
agent_id=agent_id,
|
96
|
+
agent_name=agent_name,
|
97
|
+
params=params,
|
98
|
+
trace_id=trace_id,
|
99
|
+
parent_span_id=parent_span_id,
|
100
|
+
)
|
101
|
+
|
102
|
+
async def send_event(
|
103
|
+
self,
|
104
|
+
task_id: str,
|
105
|
+
content: TaskMessageContent,
|
106
|
+
agent_id: str | None = None,
|
107
|
+
agent_name: str | None = None,
|
108
|
+
trace_id: str | None = None,
|
109
|
+
parent_span_id: str | None = None,
|
110
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
111
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
112
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
113
|
+
):
|
114
|
+
"""
|
115
|
+
Send an event to a task.
|
116
|
+
|
117
|
+
Args:
|
118
|
+
task_id: The ID of the task to send the event to.
|
119
|
+
data: The data to send to the event.
|
120
|
+
agent_id: The ID of the agent to send the event to.
|
121
|
+
agent_name: The name of the agent to send the event to.
|
122
|
+
|
123
|
+
Returns:
|
124
|
+
The event entry.
|
125
|
+
"""
|
126
|
+
if in_temporal_workflow():
|
127
|
+
return await ActivityHelpers.execute_activity(
|
128
|
+
activity_name=ACPActivityName.EVENT_SEND,
|
129
|
+
request=EventSendParams(
|
130
|
+
agent_id=agent_id,
|
131
|
+
agent_name=agent_name,
|
132
|
+
task_id=task_id,
|
133
|
+
content=content,
|
134
|
+
trace_id=trace_id,
|
135
|
+
parent_span_id=parent_span_id,
|
136
|
+
),
|
137
|
+
response_type=None,
|
138
|
+
start_to_close_timeout=start_to_close_timeout,
|
139
|
+
retry_policy=retry_policy,
|
140
|
+
heartbeat_timeout=heartbeat_timeout,
|
141
|
+
)
|
142
|
+
else:
|
143
|
+
return await self._acp_service.event_send(
|
144
|
+
agent_id=agent_id,
|
145
|
+
agent_name=agent_name,
|
146
|
+
task_id=task_id,
|
147
|
+
content=content,
|
148
|
+
trace_id=trace_id,
|
149
|
+
parent_span_id=parent_span_id,
|
150
|
+
)
|
151
|
+
|
152
|
+
async def send_message(
|
153
|
+
self,
|
154
|
+
task_id: str,
|
155
|
+
content: TaskMessageContent,
|
156
|
+
agent_id: str | None = None,
|
157
|
+
agent_name: str | None = None,
|
158
|
+
trace_id: str | None = None,
|
159
|
+
parent_span_id: str | None = None,
|
160
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
161
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
162
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
163
|
+
):
|
164
|
+
"""
|
165
|
+
Send a message to a task.
|
166
|
+
|
167
|
+
Args:
|
168
|
+
task_id: The ID of the task to send the message to.
|
169
|
+
content: The task message content to send to the task.
|
170
|
+
agent_id: The ID of the agent to send the message to.
|
171
|
+
agent_name: The name of the agent to send the message to.
|
172
|
+
|
173
|
+
Returns:
|
174
|
+
The message entry.
|
175
|
+
"""
|
176
|
+
if in_temporal_workflow():
|
177
|
+
return await ActivityHelpers.execute_activity(
|
178
|
+
activity_name=ACPActivityName.MESSAGE_SEND,
|
179
|
+
request=MessageSendParams(
|
180
|
+
agent_id=agent_id,
|
181
|
+
agent_name=agent_name,
|
182
|
+
task_id=task_id,
|
183
|
+
content=content,
|
184
|
+
trace_id=trace_id,
|
185
|
+
parent_span_id=parent_span_id,
|
186
|
+
),
|
187
|
+
response_type=TaskMessage,
|
188
|
+
start_to_close_timeout=start_to_close_timeout,
|
189
|
+
retry_policy=retry_policy,
|
190
|
+
heartbeat_timeout=heartbeat_timeout,
|
191
|
+
)
|
192
|
+
else:
|
193
|
+
return await self._acp_service.message_send(
|
194
|
+
agent_id=agent_id,
|
195
|
+
agent_name=agent_name,
|
196
|
+
task_id=task_id,
|
197
|
+
content=content,
|
198
|
+
trace_id=trace_id,
|
199
|
+
parent_span_id=parent_span_id,
|
200
|
+
)
|
201
|
+
|
202
|
+
async def cancel_task(
|
203
|
+
self,
|
204
|
+
task_id: str | None = None,
|
205
|
+
task_name: str | None = None,
|
206
|
+
trace_id: str | None = None,
|
207
|
+
parent_span_id: str | None = None,
|
208
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
209
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
210
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
211
|
+
):
|
212
|
+
"""
|
213
|
+
Cancel a task.
|
214
|
+
|
215
|
+
Args:
|
216
|
+
task_id: The ID of the task to cancel.
|
217
|
+
task_name: The name of the task to cancel.
|
218
|
+
trace_id: The trace ID for the task.
|
219
|
+
parent_span_id: The parent span ID for the task.
|
220
|
+
start_to_close_timeout: The start to close timeout for the task.
|
221
|
+
heartbeat_timeout: The heartbeat timeout for the task.
|
222
|
+
retry_policy: The retry policy for the task.
|
223
|
+
|
224
|
+
Returns:
|
225
|
+
The task entry.
|
226
|
+
"""
|
227
|
+
if in_temporal_workflow():
|
228
|
+
return await ActivityHelpers.execute_activity(
|
229
|
+
activity_name=ACPActivityName.TASK_CANCEL,
|
230
|
+
request=TaskCancelParams(
|
231
|
+
task_id=task_id,
|
232
|
+
task_name=task_name,
|
233
|
+
trace_id=trace_id,
|
234
|
+
parent_span_id=parent_span_id,
|
235
|
+
),
|
236
|
+
response_type=None,
|
237
|
+
start_to_close_timeout=start_to_close_timeout,
|
238
|
+
retry_policy=retry_policy,
|
239
|
+
heartbeat_timeout=heartbeat_timeout,
|
240
|
+
)
|
241
|
+
else:
|
242
|
+
return await self._acp_service.task_cancel(
|
243
|
+
task_id=task_id,
|
244
|
+
task_name=task_name,
|
245
|
+
trace_id=trace_id,
|
246
|
+
parent_span_id=parent_span_id,
|
247
|
+
)
|
@@ -0,0 +1,176 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
|
3
|
+
from temporalio.common import RetryPolicy
|
4
|
+
|
5
|
+
from agentex import AsyncAgentex
|
6
|
+
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
|
7
|
+
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
|
8
|
+
from agentex.lib.core.temporal.activities.adk.agent_task_tracker_activities import (
|
9
|
+
AgentTaskTrackerActivityName,
|
10
|
+
GetAgentTaskTrackerByTaskAndAgentParams,
|
11
|
+
GetAgentTaskTrackerParams,
|
12
|
+
UpdateAgentTaskTrackerParams,
|
13
|
+
)
|
14
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
15
|
+
from agentex.types.agent_task_tracker import AgentTaskTracker
|
16
|
+
from agentex.lib.utils.logging import make_logger
|
17
|
+
from agentex.lib.utils.temporal import in_temporal_workflow
|
18
|
+
|
19
|
+
logger = make_logger(__name__)
|
20
|
+
|
21
|
+
# Default retry policy for all agent task tracker operations
|
22
|
+
DEFAULT_RETRY_POLICY = RetryPolicy(maximum_attempts=1)
|
23
|
+
|
24
|
+
|
25
|
+
class AgentTaskTrackerModule:
|
26
|
+
"""
|
27
|
+
Module for managing agent task trackers in Agentex.
|
28
|
+
Provides high-level async methods for retrieving, filtering, and updating agent task trackers.
|
29
|
+
"""
|
30
|
+
|
31
|
+
def __init__(
|
32
|
+
self,
|
33
|
+
agent_task_tracker_service: AgentTaskTrackerService | None = None,
|
34
|
+
):
|
35
|
+
if agent_task_tracker_service is None:
|
36
|
+
agentex_client = AsyncAgentex()
|
37
|
+
tracer = AsyncTracer(agentex_client)
|
38
|
+
self._agent_task_tracker_service = AgentTaskTrackerService(
|
39
|
+
agentex_client=agentex_client, tracer=tracer
|
40
|
+
)
|
41
|
+
else:
|
42
|
+
self._agent_task_tracker_service = agent_task_tracker_service
|
43
|
+
|
44
|
+
async def get(
|
45
|
+
self,
|
46
|
+
tracker_id: str,
|
47
|
+
trace_id: str | None = None,
|
48
|
+
parent_span_id: str | None = None,
|
49
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
50
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
51
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
52
|
+
) -> AgentTaskTracker:
|
53
|
+
"""
|
54
|
+
Get an agent task tracker by ID.
|
55
|
+
|
56
|
+
Args:
|
57
|
+
tracker_id (str): The ID of the tracker.
|
58
|
+
trace_id (Optional[str]): The trace ID for tracing.
|
59
|
+
parent_span_id (Optional[str]): The parent span ID for tracing.
|
60
|
+
start_to_close_timeout (timedelta): The start to close timeout.
|
61
|
+
heartbeat_timeout (timedelta): The heartbeat timeout.
|
62
|
+
retry_policy (RetryPolicy): The retry policy.
|
63
|
+
|
64
|
+
Returns:
|
65
|
+
AgentTaskTracker: The agent task tracker.
|
66
|
+
"""
|
67
|
+
params = GetAgentTaskTrackerParams(
|
68
|
+
tracker_id=tracker_id,
|
69
|
+
trace_id=trace_id,
|
70
|
+
parent_span_id=parent_span_id,
|
71
|
+
)
|
72
|
+
if in_temporal_workflow():
|
73
|
+
return await ActivityHelpers.execute_activity(
|
74
|
+
activity_name=AgentTaskTrackerActivityName.GET_AGENT_TASK_TRACKER,
|
75
|
+
request=params,
|
76
|
+
response_type=AgentTaskTracker,
|
77
|
+
start_to_close_timeout=start_to_close_timeout,
|
78
|
+
retry_policy=retry_policy,
|
79
|
+
heartbeat_timeout=heartbeat_timeout,
|
80
|
+
)
|
81
|
+
else:
|
82
|
+
return await self._agent_task_tracker_service.get_agent_task_tracker(
|
83
|
+
tracker_id=tracker_id,
|
84
|
+
trace_id=trace_id,
|
85
|
+
parent_span_id=parent_span_id,
|
86
|
+
)
|
87
|
+
|
88
|
+
async def get_by_task_and_agent(
|
89
|
+
self,
|
90
|
+
task_id: str,
|
91
|
+
agent_id: str,
|
92
|
+
trace_id: str | None = None,
|
93
|
+
parent_span_id: str | None = None,
|
94
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
95
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
96
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
97
|
+
) -> AgentTaskTracker | None:
|
98
|
+
"""
|
99
|
+
Get an agent task tracker by task ID and agent ID.
|
100
|
+
"""
|
101
|
+
params = GetAgentTaskTrackerByTaskAndAgentParams(
|
102
|
+
task_id=task_id,
|
103
|
+
agent_id=agent_id,
|
104
|
+
trace_id=trace_id,
|
105
|
+
parent_span_id=parent_span_id,
|
106
|
+
)
|
107
|
+
if in_temporal_workflow():
|
108
|
+
return await ActivityHelpers.execute_activity(
|
109
|
+
activity_name=AgentTaskTrackerActivityName.GET_AGENT_TASK_TRACKER_BY_TASK_AND_AGENT,
|
110
|
+
request=params,
|
111
|
+
response_type=AgentTaskTracker,
|
112
|
+
start_to_close_timeout=start_to_close_timeout,
|
113
|
+
retry_policy=retry_policy,
|
114
|
+
heartbeat_timeout=heartbeat_timeout,
|
115
|
+
)
|
116
|
+
else:
|
117
|
+
return await self._agent_task_tracker_service.get_by_task_and_agent(
|
118
|
+
task_id=task_id,
|
119
|
+
agent_id=agent_id,
|
120
|
+
trace_id=trace_id,
|
121
|
+
parent_span_id=parent_span_id,
|
122
|
+
)
|
123
|
+
|
124
|
+
async def update(
|
125
|
+
self,
|
126
|
+
tracker_id: str,
|
127
|
+
last_processed_event_id: str | None = None,
|
128
|
+
status: str | None = None,
|
129
|
+
status_reason: str | None = None,
|
130
|
+
trace_id: str | None = None,
|
131
|
+
parent_span_id: str | None = None,
|
132
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
133
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
134
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
135
|
+
) -> AgentTaskTracker:
|
136
|
+
"""
|
137
|
+
Update an agent task tracker.
|
138
|
+
|
139
|
+
Args:
|
140
|
+
tracker_id (str): The ID of the tracker to update.
|
141
|
+
request (UpdateAgentTaskTrackerRequest): The update request containing the new values.
|
142
|
+
trace_id (Optional[str]): The trace ID for tracing.
|
143
|
+
parent_span_id (Optional[str]): The parent span ID for tracing.
|
144
|
+
start_to_close_timeout (timedelta): The start to close timeout.
|
145
|
+
heartbeat_timeout (timedelta): The heartbeat timeout.
|
146
|
+
retry_policy (RetryPolicy): The retry policy.
|
147
|
+
|
148
|
+
Returns:
|
149
|
+
AgentTaskTracker: The updated agent task tracker.
|
150
|
+
"""
|
151
|
+
params = UpdateAgentTaskTrackerParams(
|
152
|
+
tracker_id=tracker_id,
|
153
|
+
last_processed_event_id=last_processed_event_id,
|
154
|
+
status=status,
|
155
|
+
status_reason=status_reason,
|
156
|
+
trace_id=trace_id,
|
157
|
+
parent_span_id=parent_span_id,
|
158
|
+
)
|
159
|
+
if in_temporal_workflow():
|
160
|
+
return await ActivityHelpers.execute_activity(
|
161
|
+
activity_name=AgentTaskTrackerActivityName.UPDATE_AGENT_TASK_TRACKER,
|
162
|
+
request=params,
|
163
|
+
response_type=AgentTaskTracker,
|
164
|
+
start_to_close_timeout=start_to_close_timeout,
|
165
|
+
retry_policy=retry_policy,
|
166
|
+
heartbeat_timeout=heartbeat_timeout,
|
167
|
+
)
|
168
|
+
else:
|
169
|
+
return await self._agent_task_tracker_service.update_agent_task_tracker(
|
170
|
+
tracker_id=tracker_id,
|
171
|
+
last_processed_event_id=last_processed_event_id,
|
172
|
+
status=status,
|
173
|
+
status_reason=status_reason,
|
174
|
+
trace_id=trace_id,
|
175
|
+
parent_span_id=parent_span_id,
|
176
|
+
)
|
@@ -0,0 +1,77 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
from typing import Optional
|
3
|
+
|
4
|
+
from agentex.lib.core.temporal.activities.adk.agents_activities import AgentsActivityName, GetAgentParams
|
5
|
+
from temporalio.common import RetryPolicy
|
6
|
+
|
7
|
+
from agentex import AsyncAgentex
|
8
|
+
from agentex.lib.core.services.adk.agents import AgentsService
|
9
|
+
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
|
10
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
11
|
+
from agentex.types.agent import Agent
|
12
|
+
from agentex.lib.utils.logging import make_logger
|
13
|
+
from agentex.lib.utils.temporal import in_temporal_workflow
|
14
|
+
|
15
|
+
logger = make_logger(__name__)
|
16
|
+
|
17
|
+
DEFAULT_RETRY_POLICY = RetryPolicy(maximum_attempts=1)
|
18
|
+
|
19
|
+
|
20
|
+
class AgentsModule:
|
21
|
+
"""
|
22
|
+
Module for managing agents in Agentex.
|
23
|
+
Provides high-level async methods for retrieving, listing, and deleting agents.
|
24
|
+
"""
|
25
|
+
|
26
|
+
def __init__(
|
27
|
+
self,
|
28
|
+
agents_service: Optional[AgentsService] = None,
|
29
|
+
):
|
30
|
+
if agents_service is None:
|
31
|
+
agentex_client = AsyncAgentex()
|
32
|
+
tracer = AsyncTracer(agentex_client)
|
33
|
+
self._agents_service = AgentsService(agentex_client=agentex_client, tracer=tracer)
|
34
|
+
else:
|
35
|
+
self._agents_service = agents_service
|
36
|
+
|
37
|
+
async def get(
|
38
|
+
self,
|
39
|
+
*,
|
40
|
+
agent_id: Optional[str] = None,
|
41
|
+
agent_name: Optional[str] = None,
|
42
|
+
trace_id: Optional[str] = None,
|
43
|
+
parent_span_id: Optional[str] = None,
|
44
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
45
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
46
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
47
|
+
) -> Agent:
|
48
|
+
"""
|
49
|
+
Get an agent by ID or name.
|
50
|
+
Args:
|
51
|
+
agent_id: The ID of the agent to retrieve.
|
52
|
+
agent_name: The name of the agent to retrieve.
|
53
|
+
Returns:
|
54
|
+
The agent entry.
|
55
|
+
"""
|
56
|
+
params = GetAgentParams(
|
57
|
+
agent_id=agent_id,
|
58
|
+
agent_name=agent_name,
|
59
|
+
trace_id=trace_id,
|
60
|
+
parent_span_id=parent_span_id,
|
61
|
+
)
|
62
|
+
if in_temporal_workflow():
|
63
|
+
return await ActivityHelpers.execute_activity(
|
64
|
+
activity_name=AgentsActivityName.GET_AGENT,
|
65
|
+
request=params,
|
66
|
+
response_type=Agent,
|
67
|
+
start_to_close_timeout=start_to_close_timeout,
|
68
|
+
retry_policy=retry_policy,
|
69
|
+
heartbeat_timeout=heartbeat_timeout,
|
70
|
+
)
|
71
|
+
else:
|
72
|
+
return await self._agents_service.get_agent(
|
73
|
+
agent_id=agent_id,
|
74
|
+
agent_name=agent_name,
|
75
|
+
trace_id=trace_id,
|
76
|
+
parent_span_id=parent_span_id,
|
77
|
+
)
|
@@ -0,0 +1,141 @@
|
|
1
|
+
from datetime import timedelta
|
2
|
+
|
3
|
+
from temporalio.common import RetryPolicy
|
4
|
+
|
5
|
+
from agentex import AsyncAgentex
|
6
|
+
from agentex.lib.core.services.adk.events import EventsService
|
7
|
+
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
|
8
|
+
from agentex.lib.core.temporal.activities.adk.events_activities import (
|
9
|
+
EventsActivityName,
|
10
|
+
GetEventParams,
|
11
|
+
ListEventsParams,
|
12
|
+
)
|
13
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
14
|
+
from agentex.types.event import Event
|
15
|
+
from agentex.lib.utils.logging import make_logger
|
16
|
+
from agentex.lib.utils.temporal import in_temporal_workflow
|
17
|
+
|
18
|
+
logger = make_logger(__name__)
|
19
|
+
|
20
|
+
# Default retry policy for all events operations
|
21
|
+
DEFAULT_RETRY_POLICY = RetryPolicy(maximum_attempts=1)
|
22
|
+
|
23
|
+
|
24
|
+
class EventsModule:
|
25
|
+
"""
|
26
|
+
Module for managing events in Agentex.
|
27
|
+
Provides high-level async methods for retrieving and listing events.
|
28
|
+
"""
|
29
|
+
|
30
|
+
def __init__(
|
31
|
+
self,
|
32
|
+
events_service: EventsService | None = None,
|
33
|
+
):
|
34
|
+
if events_service is None:
|
35
|
+
agentex_client = AsyncAgentex()
|
36
|
+
tracer = AsyncTracer(agentex_client)
|
37
|
+
self._events_service = EventsService(
|
38
|
+
agentex_client=agentex_client, tracer=tracer
|
39
|
+
)
|
40
|
+
else:
|
41
|
+
self._events_service = events_service
|
42
|
+
|
43
|
+
async def get(
|
44
|
+
self,
|
45
|
+
event_id: str,
|
46
|
+
trace_id: str | None = None,
|
47
|
+
parent_span_id: str | None = None,
|
48
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
49
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
50
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
51
|
+
) -> Event | None:
|
52
|
+
"""
|
53
|
+
Get an event by ID.
|
54
|
+
|
55
|
+
Args:
|
56
|
+
event_id (str): The ID of the event.
|
57
|
+
trace_id (Optional[str]): The trace ID for tracing.
|
58
|
+
parent_span_id (Optional[str]): The parent span ID for tracing.
|
59
|
+
start_to_close_timeout (timedelta): The start to close timeout.
|
60
|
+
heartbeat_timeout (timedelta): The heartbeat timeout.
|
61
|
+
retry_policy (RetryPolicy): The retry policy.
|
62
|
+
|
63
|
+
Returns:
|
64
|
+
Optional[Event]: The event if found, None otherwise.
|
65
|
+
"""
|
66
|
+
params = GetEventParams(
|
67
|
+
event_id=event_id,
|
68
|
+
trace_id=trace_id,
|
69
|
+
parent_span_id=parent_span_id,
|
70
|
+
)
|
71
|
+
if in_temporal_workflow():
|
72
|
+
return await ActivityHelpers.execute_activity(
|
73
|
+
activity_name=EventsActivityName.GET_EVENT,
|
74
|
+
request=params,
|
75
|
+
response_type=Event,
|
76
|
+
start_to_close_timeout=start_to_close_timeout,
|
77
|
+
retry_policy=retry_policy,
|
78
|
+
heartbeat_timeout=heartbeat_timeout,
|
79
|
+
)
|
80
|
+
else:
|
81
|
+
return await self._events_service.get_event(
|
82
|
+
event_id=event_id,
|
83
|
+
trace_id=trace_id,
|
84
|
+
parent_span_id=parent_span_id,
|
85
|
+
)
|
86
|
+
|
87
|
+
async def list_events(
|
88
|
+
self,
|
89
|
+
task_id: str,
|
90
|
+
agent_id: str,
|
91
|
+
last_processed_event_id: str | None = None,
|
92
|
+
limit: int | None = None,
|
93
|
+
trace_id: str | None = None,
|
94
|
+
parent_span_id: str | None = None,
|
95
|
+
start_to_close_timeout: timedelta = timedelta(seconds=5),
|
96
|
+
heartbeat_timeout: timedelta = timedelta(seconds=5),
|
97
|
+
retry_policy: RetryPolicy = DEFAULT_RETRY_POLICY,
|
98
|
+
) -> list[Event]:
|
99
|
+
"""
|
100
|
+
List events for a specific task and agent.
|
101
|
+
|
102
|
+
Args:
|
103
|
+
task_id (str): The ID of the task.
|
104
|
+
agent_id (str): The ID of the agent.
|
105
|
+
last_processed_event_id (Optional[str]): Optional event ID to get events after this ID.
|
106
|
+
limit (Optional[int]): Optional limit on number of results.
|
107
|
+
trace_id (Optional[str]): The trace ID for tracing.
|
108
|
+
parent_span_id (Optional[str]): The parent span ID for tracing.
|
109
|
+
start_to_close_timeout (timedelta): The start to close timeout.
|
110
|
+
heartbeat_timeout (timedelta): The heartbeat timeout.
|
111
|
+
retry_policy (RetryPolicy): The retry policy.
|
112
|
+
|
113
|
+
Returns:
|
114
|
+
List[Event]: List of events ordered by sequence_id.
|
115
|
+
"""
|
116
|
+
params = ListEventsParams(
|
117
|
+
task_id=task_id,
|
118
|
+
agent_id=agent_id,
|
119
|
+
last_processed_event_id=last_processed_event_id,
|
120
|
+
limit=limit,
|
121
|
+
trace_id=trace_id,
|
122
|
+
parent_span_id=parent_span_id,
|
123
|
+
)
|
124
|
+
if in_temporal_workflow():
|
125
|
+
return await ActivityHelpers.execute_activity(
|
126
|
+
activity_name=EventsActivityName.LIST_EVENTS,
|
127
|
+
request=params,
|
128
|
+
response_type=list[Event],
|
129
|
+
start_to_close_timeout=start_to_close_timeout,
|
130
|
+
retry_policy=retry_policy,
|
131
|
+
heartbeat_timeout=heartbeat_timeout,
|
132
|
+
)
|
133
|
+
else:
|
134
|
+
return await self._events_service.list_events(
|
135
|
+
task_id=task_id,
|
136
|
+
agent_id=agent_id,
|
137
|
+
last_processed_event_id=last_processed_event_id,
|
138
|
+
limit=limit,
|
139
|
+
trace_id=trace_id,
|
140
|
+
parent_span_id=parent_span_id,
|
141
|
+
)
|