agentex-sdk 0.4.19__py3-none-any.whl → 0.4.21__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 +0 -1
- agentex/_utils/_typing.py +3 -1
- agentex/_version.py +1 -1
- agentex/lib/adk/__init__.py +3 -0
- agentex/lib/adk/_modules/acp.py +3 -1
- agentex/lib/adk/_modules/agent_task_tracker.py +3 -1
- agentex/lib/adk/_modules/agents.py +3 -1
- agentex/lib/adk/_modules/events.py +3 -1
- agentex/lib/adk/_modules/messages.py +3 -1
- agentex/lib/adk/_modules/state.py +3 -1
- agentex/lib/adk/_modules/streaming.py +3 -1
- agentex/lib/adk/_modules/tasks.py +4 -2
- agentex/lib/adk/_modules/tracing.py +3 -1
- agentex/lib/adk/providers/__init__.py +2 -2
- agentex/lib/adk/providers/_modules/litellm.py +10 -11
- agentex/lib/adk/providers/_modules/openai.py +27 -28
- agentex/lib/adk/providers/_modules/sgp.py +5 -6
- agentex/lib/adk/utils/_modules/client.py +4 -1
- agentex/lib/adk/utils/_modules/templating.py +5 -6
- agentex/lib/cli/commands/agents.py +21 -21
- agentex/lib/cli/commands/init.py +3 -3
- agentex/lib/cli/commands/main.py +3 -3
- agentex/lib/cli/commands/secrets.py +10 -10
- agentex/lib/cli/commands/tasks.py +26 -28
- agentex/lib/cli/commands/uv.py +1 -1
- agentex/lib/cli/debug/__init__.py +1 -1
- agentex/lib/cli/debug/debug_config.py +1 -2
- agentex/lib/cli/debug/debug_handlers.py +6 -4
- agentex/lib/cli/handlers/agent_handlers.py +15 -16
- agentex/lib/cli/handlers/cleanup_handlers.py +1 -1
- agentex/lib/cli/handlers/deploy_handlers.py +20 -39
- agentex/lib/cli/handlers/run_handlers.py +13 -16
- agentex/lib/cli/handlers/secret_handlers.py +25 -25
- agentex/lib/cli/templates/temporal/project/acp.py.j2 +11 -8
- agentex/lib/cli/utils/auth_utils.py +3 -2
- agentex/lib/cli/utils/credential_utils.py +1 -1
- agentex/lib/cli/utils/kubectl_utils.py +3 -3
- agentex/lib/cli/utils/kubernetes_secrets_utils.py +4 -4
- agentex/lib/cli/utils/path_utils.py +2 -2
- agentex/lib/core/adapters/llm/adapter_litellm.py +9 -4
- agentex/lib/core/adapters/llm/adapter_sgp.py +10 -7
- agentex/lib/core/adapters/llm/port.py +1 -1
- agentex/lib/core/adapters/streams/adapter_redis.py +7 -4
- agentex/lib/core/adapters/streams/port.py +1 -1
- agentex/lib/core/clients/temporal/temporal_client.py +34 -34
- agentex/lib/core/clients/temporal/types.py +1 -1
- agentex/lib/core/clients/temporal/utils.py +27 -25
- agentex/lib/core/services/adk/acp/acp.py +6 -6
- agentex/lib/core/services/adk/agent_task_tracker.py +1 -1
- agentex/lib/core/services/adk/agents.py +1 -1
- agentex/lib/core/services/adk/events.py +1 -1
- agentex/lib/core/services/adk/messages.py +5 -6
- agentex/lib/core/services/adk/providers/litellm.py +10 -10
- agentex/lib/core/services/adk/providers/openai.py +75 -43
- agentex/lib/core/services/adk/providers/sgp.py +3 -3
- agentex/lib/core/services/adk/state.py +5 -1
- agentex/lib/core/services/adk/streaming.py +19 -19
- agentex/lib/core/services/adk/tasks.py +8 -2
- agentex/lib/core/services/adk/tracing.py +3 -2
- agentex/lib/core/services/adk/utils/templating.py +4 -2
- agentex/lib/core/temporal/activities/__init__.py +27 -27
- agentex/lib/core/temporal/activities/activity_helpers.py +1 -1
- agentex/lib/core/temporal/activities/adk/acp/acp_activities.py +4 -4
- agentex/lib/core/temporal/activities/adk/agent_task_tracker_activities.py +1 -1
- agentex/lib/core/temporal/activities/adk/agents_activities.py +2 -2
- agentex/lib/core/temporal/activities/adk/events_activities.py +1 -1
- agentex/lib/core/temporal/activities/adk/messages_activities.py +3 -3
- agentex/lib/core/temporal/activities/adk/providers/litellm_activities.py +4 -4
- agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py +1 -1
- agentex/lib/core/temporal/activities/adk/state_activities.py +1 -1
- agentex/lib/core/temporal/activities/adk/streaming_activities.py +3 -3
- agentex/lib/core/temporal/activities/adk/tasks_activities.py +2 -2
- agentex/lib/core/temporal/activities/adk/tracing_activities.py +1 -1
- agentex/lib/core/temporal/activities/adk/utils/templating_activities.py +1 -1
- agentex/lib/core/temporal/services/temporal_task_service.py +7 -7
- agentex/lib/core/temporal/workers/worker.py +31 -40
- agentex/lib/core/temporal/workflows/workflow.py +2 -2
- agentex/lib/core/tracing/__init__.py +2 -2
- agentex/lib/core/tracing/processors/agentex_tracing_processor.py +6 -6
- agentex/lib/core/tracing/processors/sgp_tracing_processor.py +16 -16
- agentex/lib/core/tracing/processors/tracing_processor_interface.py +1 -1
- agentex/lib/core/tracing/trace.py +7 -7
- agentex/lib/core/tracing/tracer.py +2 -2
- agentex/lib/core/tracing/tracing_processor_manager.py +43 -13
- agentex/lib/environment_variables.py +4 -4
- agentex/lib/sdk/config/agent_config.py +2 -2
- agentex/lib/sdk/config/agent_manifest.py +8 -8
- agentex/lib/sdk/config/project_config.py +6 -6
- agentex/lib/sdk/config/validation.py +2 -2
- agentex/lib/sdk/fastacp/base/base_acp_server.py +16 -16
- agentex/lib/sdk/fastacp/fastacp.py +14 -15
- agentex/lib/sdk/fastacp/impl/agentic_base_acp.py +4 -5
- agentex/lib/sdk/fastacp/impl/sync_acp.py +7 -7
- agentex/lib/sdk/fastacp/impl/temporal_acp.py +28 -19
- agentex/lib/sdk/fastacp/tests/conftest.py +18 -16
- agentex/lib/sdk/fastacp/tests/run_tests.py +1 -1
- agentex/lib/sdk/fastacp/tests/test_base_acp_server.py +4 -4
- agentex/lib/sdk/fastacp/tests/test_fastacp_factory.py +8 -8
- agentex/lib/sdk/fastacp/tests/test_integration.py +15 -14
- agentex/lib/sdk/state_machine/__init__.py +1 -1
- agentex/lib/sdk/state_machine/noop_workflow.py +5 -3
- agentex/lib/sdk/state_machine/state_machine.py +18 -12
- agentex/lib/sdk/utils/messages.py +5 -5
- agentex/lib/types/acp.py +2 -2
- agentex/lib/types/agent_configs.py +1 -1
- agentex/lib/types/converters.py +4 -2
- agentex/lib/types/credentials.py +1 -1
- agentex/lib/types/fastacp.py +4 -5
- agentex/lib/types/tracing.py +1 -1
- agentex/lib/utils/completions.py +5 -5
- agentex/lib/utils/console.py +1 -1
- agentex/lib/utils/debug.py +10 -5
- agentex/lib/utils/dev_tools/async_messages.py +11 -12
- agentex/lib/utils/iterables.py +1 -1
- agentex/lib/utils/json_schema.py +4 -4
- agentex/lib/utils/logging.py +7 -7
- agentex/lib/utils/mcp.py +1 -0
- agentex/lib/utils/model_utils.py +4 -5
- agentex/lib/utils/registration.py +5 -4
- agentex/resources/agents.py +11 -4
- agentex/types/agent_rpc_response.py +3 -3
- agentex/types/data_content.py +1 -1
- agentex/types/tool_request_content.py +1 -1
- agentex/types/tool_response_content.py +0 -1
- {agentex_sdk-0.4.19.dist-info → agentex_sdk-0.4.21.dist-info}/METADATA +1 -1
- {agentex_sdk-0.4.19.dist-info → agentex_sdk-0.4.21.dist-info}/RECORD +129 -129
- {agentex_sdk-0.4.19.dist-info → agentex_sdk-0.4.21.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.4.19.dist-info → agentex_sdk-0.4.21.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.4.19.dist-info → agentex_sdk-0.4.21.dist-info}/licenses/LICENSE +0 -0
@@ -1,51 +1,51 @@
|
|
1
1
|
# Standard library imports
|
2
|
-
from contextlib import AsyncExitStack, asynccontextmanager
|
3
2
|
from typing import Any, Literal
|
3
|
+
from contextlib import AsyncExitStack, asynccontextmanager
|
4
4
|
|
5
|
+
from mcp import StdioServerParameters
|
5
6
|
from agents import Agent, Runner, RunResult, RunResultStreaming
|
7
|
+
from pydantic import BaseModel
|
8
|
+
from agents.mcp import MCPServerStdio
|
6
9
|
from agents.agent import StopAtTools, ToolsToFinalOutputFunction
|
7
10
|
from agents.guardrail import InputGuardrail, OutputGuardrail
|
8
11
|
from agents.exceptions import InputGuardrailTripwireTriggered, OutputGuardrailTripwireTriggered
|
9
|
-
from agents.mcp import MCPServerStdio
|
10
|
-
from mcp import StdioServerParameters
|
11
12
|
from openai.types.responses import (
|
12
13
|
ResponseCompletedEvent,
|
14
|
+
ResponseTextDeltaEvent,
|
13
15
|
ResponseFunctionWebSearch,
|
14
|
-
ResponseCodeInterpreterToolCall,
|
15
16
|
ResponseOutputItemDoneEvent,
|
16
|
-
ResponseTextDeltaEvent,
|
17
|
-
ResponseReasoningSummaryTextDeltaEvent,
|
18
|
-
ResponseReasoningSummaryTextDoneEvent,
|
19
|
-
ResponseReasoningTextDeltaEvent,
|
20
17
|
ResponseReasoningTextDoneEvent,
|
18
|
+
ResponseCodeInterpreterToolCall,
|
19
|
+
ResponseReasoningTextDeltaEvent,
|
20
|
+
ResponseReasoningSummaryTextDoneEvent,
|
21
|
+
ResponseReasoningSummaryTextDeltaEvent,
|
21
22
|
)
|
22
|
-
from pydantic import BaseModel
|
23
23
|
|
24
24
|
# Local imports
|
25
25
|
from agentex import AsyncAgentex
|
26
|
-
from agentex.lib.
|
27
|
-
|
28
|
-
|
29
|
-
)
|
26
|
+
from agentex.lib.utils import logging
|
27
|
+
from agentex.lib.utils.mcp import redact_mcp_server_params
|
28
|
+
from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
30
29
|
from agentex.lib.core.tracing.tracer import AsyncTracer
|
31
|
-
from agentex.types.task_message_update import (
|
32
|
-
StreamTaskMessageDelta,
|
33
|
-
StreamTaskMessageFull,
|
34
|
-
)
|
35
30
|
from agentex.types.task_message_delta import (
|
36
31
|
TextDelta,
|
37
|
-
ReasoningSummaryDelta,
|
38
32
|
ReasoningContentDelta,
|
33
|
+
ReasoningSummaryDelta,
|
34
|
+
)
|
35
|
+
from agentex.types.task_message_update import (
|
36
|
+
StreamTaskMessageFull,
|
37
|
+
StreamTaskMessageDelta,
|
39
38
|
)
|
40
39
|
from agentex.types.task_message_content import (
|
41
|
-
ReasoningContent,
|
42
40
|
TextContent,
|
41
|
+
ReasoningContent,
|
43
42
|
ToolRequestContent,
|
44
43
|
ToolResponseContent,
|
45
44
|
)
|
46
|
-
from agentex.lib.
|
47
|
-
|
48
|
-
|
45
|
+
from agentex.lib.core.services.adk.streaming import (
|
46
|
+
StreamingService,
|
47
|
+
StreamingTaskMessageContext,
|
48
|
+
)
|
49
49
|
|
50
50
|
logger = logging.make_logger(__name__)
|
51
51
|
|
@@ -141,15 +141,15 @@ class OpenAIService:
|
|
141
141
|
content = tool_output_item["output"]
|
142
142
|
else:
|
143
143
|
# Attribute access for structured objects
|
144
|
-
call_id = getattr(tool_output_item, "call_id",
|
145
|
-
content = getattr(tool_output_item, "output",
|
144
|
+
call_id = getattr(tool_output_item, "call_id", "")
|
145
|
+
content = getattr(tool_output_item, "output", "")
|
146
146
|
|
147
147
|
# Get the name from the tool call map using generic approach
|
148
148
|
tool_call = tool_call_map[call_id]
|
149
149
|
if hasattr(tool_call, "name"):
|
150
|
-
tool_name =
|
150
|
+
tool_name = tool_call.name
|
151
151
|
elif hasattr(tool_call, "type"):
|
152
|
-
tool_name =
|
152
|
+
tool_name = tool_call.type
|
153
153
|
else:
|
154
154
|
tool_name = type(tool_call).__name__
|
155
155
|
|
@@ -176,7 +176,7 @@ class OpenAIService:
|
|
176
176
|
input_guardrails: list[InputGuardrail] | None = None,
|
177
177
|
output_guardrails: list[OutputGuardrail] | None = None,
|
178
178
|
max_turns: int | None = None,
|
179
|
-
previous_response_id: str | None = None,
|
179
|
+
previous_response_id: str | None = None, # noqa: ARG002
|
180
180
|
) -> RunResult:
|
181
181
|
"""
|
182
182
|
Run an agent without streaming or TaskMessage creation.
|
@@ -208,6 +208,8 @@ class OpenAIService:
|
|
208
208
|
"""
|
209
209
|
redacted_params = redact_mcp_server_params(mcp_server_params)
|
210
210
|
|
211
|
+
if self.tracer is None:
|
212
|
+
raise RuntimeError("Tracer not initialized - ensure tracer is provided to OpenAIService")
|
211
213
|
trace = self.tracer.trace(trace_id)
|
212
214
|
async with trace.span(
|
213
215
|
parent_id=parent_span_id,
|
@@ -230,8 +232,11 @@ class OpenAIService:
|
|
230
232
|
heartbeat_if_in_workflow("run agent")
|
231
233
|
|
232
234
|
async with mcp_server_context(mcp_server_params, mcp_timeout_seconds) as servers:
|
233
|
-
tools = [
|
234
|
-
|
235
|
+
tools = [
|
236
|
+
tool.to_oai_function_tool() if hasattr(tool, 'to_oai_function_tool') else tool # type: ignore[attr-defined]
|
237
|
+
for tool in tools
|
238
|
+
] if tools else []
|
239
|
+
handoffs = [Agent(**handoff.model_dump()) for handoff in handoffs] if handoffs else [] # type: ignore[misc]
|
235
240
|
|
236
241
|
agent_kwargs = {
|
237
242
|
"name": agent_name,
|
@@ -245,7 +250,10 @@ class OpenAIService:
|
|
245
250
|
"tool_use_behavior": tool_use_behavior,
|
246
251
|
}
|
247
252
|
if model_settings is not None:
|
248
|
-
agent_kwargs["model_settings"] =
|
253
|
+
agent_kwargs["model_settings"] = (
|
254
|
+
model_settings.to_oai_model_settings() if hasattr(model_settings, 'to_oai_model_settings') # type: ignore[attr-defined]
|
255
|
+
else model_settings
|
256
|
+
)
|
249
257
|
if input_guardrails is not None:
|
250
258
|
agent_kwargs["input_guardrails"] = input_guardrails
|
251
259
|
if output_guardrails is not None:
|
@@ -303,7 +311,7 @@ class OpenAIService:
|
|
303
311
|
input_guardrails: list[InputGuardrail] | None = None,
|
304
312
|
output_guardrails: list[OutputGuardrail] | None = None,
|
305
313
|
max_turns: int | None = None,
|
306
|
-
previous_response_id: str | None = None,
|
314
|
+
previous_response_id: str | None = None, # noqa: ARG002
|
307
315
|
) -> RunResult:
|
308
316
|
"""
|
309
317
|
Run an agent with automatic TaskMessage creation.
|
@@ -337,6 +345,8 @@ class OpenAIService:
|
|
337
345
|
|
338
346
|
redacted_params = redact_mcp_server_params(mcp_server_params)
|
339
347
|
|
348
|
+
if self.tracer is None:
|
349
|
+
raise RuntimeError("Tracer not initialized - ensure tracer is provided to OpenAIService")
|
340
350
|
trace = self.tracer.trace(trace_id)
|
341
351
|
async with trace.span(
|
342
352
|
parent_id=parent_span_id,
|
@@ -360,8 +370,11 @@ class OpenAIService:
|
|
360
370
|
heartbeat_if_in_workflow("run agent auto send")
|
361
371
|
|
362
372
|
async with mcp_server_context(mcp_server_params, mcp_timeout_seconds) as servers:
|
363
|
-
tools = [
|
364
|
-
|
373
|
+
tools = [
|
374
|
+
tool.to_oai_function_tool() if hasattr(tool, 'to_oai_function_tool') else tool # type: ignore[attr-defined]
|
375
|
+
for tool in tools
|
376
|
+
] if tools else []
|
377
|
+
handoffs = [Agent(**handoff.model_dump()) for handoff in handoffs] if handoffs else [] # type: ignore[misc]
|
365
378
|
agent_kwargs = {
|
366
379
|
"name": agent_name,
|
367
380
|
"instructions": agent_instructions,
|
@@ -374,7 +387,10 @@ class OpenAIService:
|
|
374
387
|
"tool_use_behavior": tool_use_behavior,
|
375
388
|
}
|
376
389
|
if model_settings is not None:
|
377
|
-
agent_kwargs["model_settings"] =
|
390
|
+
agent_kwargs["model_settings"] = (
|
391
|
+
model_settings.to_oai_model_settings() if hasattr(model_settings, 'to_oai_model_settings') # type: ignore[attr-defined]
|
392
|
+
else model_settings
|
393
|
+
)
|
378
394
|
if input_guardrails is not None:
|
379
395
|
agent_kwargs["input_guardrails"] = input_guardrails
|
380
396
|
if output_guardrails is not None:
|
@@ -414,7 +430,7 @@ class OpenAIService:
|
|
414
430
|
if item.type == "message_output_item":
|
415
431
|
text_content = TextContent(
|
416
432
|
author="agent",
|
417
|
-
content=item.raw_item.content[0].text,
|
433
|
+
content=item.raw_item.content[0].text, # type: ignore[union-attr]
|
418
434
|
)
|
419
435
|
# Create message for the final result using streaming context
|
420
436
|
async with self.streaming_service.streaming_task_message_context(
|
@@ -504,7 +520,7 @@ class OpenAIService:
|
|
504
520
|
input_guardrails: list[InputGuardrail] | None = None,
|
505
521
|
output_guardrails: list[OutputGuardrail] | None = None,
|
506
522
|
max_turns: int | None = None,
|
507
|
-
previous_response_id: str | None = None,
|
523
|
+
previous_response_id: str | None = None, # noqa: ARG002
|
508
524
|
) -> RunResultStreaming:
|
509
525
|
"""
|
510
526
|
Run an agent with streaming enabled but no TaskMessage creation.
|
@@ -534,6 +550,8 @@ class OpenAIService:
|
|
534
550
|
Returns:
|
535
551
|
RunResultStreaming: The result of the agent run with streaming.
|
536
552
|
"""
|
553
|
+
if self.tracer is None:
|
554
|
+
raise RuntimeError("Tracer not initialized - ensure tracer is provided to OpenAIService")
|
537
555
|
trace = self.tracer.trace(trace_id)
|
538
556
|
redacted_params = redact_mcp_server_params(mcp_server_params)
|
539
557
|
|
@@ -558,8 +576,11 @@ class OpenAIService:
|
|
558
576
|
heartbeat_if_in_workflow("run agent streamed")
|
559
577
|
|
560
578
|
async with mcp_server_context(mcp_server_params, mcp_timeout_seconds) as servers:
|
561
|
-
tools = [
|
562
|
-
|
579
|
+
tools = [
|
580
|
+
tool.to_oai_function_tool() if hasattr(tool, 'to_oai_function_tool') else tool # type: ignore[attr-defined]
|
581
|
+
for tool in tools
|
582
|
+
] if tools else []
|
583
|
+
handoffs = [Agent(**handoff.model_dump()) for handoff in handoffs] if handoffs else [] # type: ignore[misc]
|
563
584
|
agent_kwargs = {
|
564
585
|
"name": agent_name,
|
565
586
|
"instructions": agent_instructions,
|
@@ -572,7 +593,10 @@ class OpenAIService:
|
|
572
593
|
"tool_use_behavior": tool_use_behavior,
|
573
594
|
}
|
574
595
|
if model_settings is not None:
|
575
|
-
agent_kwargs["model_settings"] =
|
596
|
+
agent_kwargs["model_settings"] = (
|
597
|
+
model_settings.to_oai_model_settings() if hasattr(model_settings, 'to_oai_model_settings') # type: ignore[attr-defined]
|
598
|
+
else model_settings
|
599
|
+
)
|
576
600
|
if input_guardrails is not None:
|
577
601
|
agent_kwargs["input_guardrails"] = input_guardrails
|
578
602
|
if output_guardrails is not None:
|
@@ -630,7 +654,7 @@ class OpenAIService:
|
|
630
654
|
input_guardrails: list[InputGuardrail] | None = None,
|
631
655
|
output_guardrails: list[OutputGuardrail] | None = None,
|
632
656
|
max_turns: int | None = None,
|
633
|
-
previous_response_id: str | None = None,
|
657
|
+
previous_response_id: str | None = None, # noqa: ARG002
|
634
658
|
) -> RunResultStreaming:
|
635
659
|
"""
|
636
660
|
Run an agent with streaming enabled and automatic TaskMessage creation.
|
@@ -669,6 +693,8 @@ class OpenAIService:
|
|
669
693
|
|
670
694
|
tool_call_map: dict[str, Any] = {}
|
671
695
|
|
696
|
+
if self.tracer is None:
|
697
|
+
raise RuntimeError("Tracer not initialized - ensure tracer is provided to OpenAIService")
|
672
698
|
trace = self.tracer.trace(trace_id)
|
673
699
|
redacted_params = redact_mcp_server_params(mcp_server_params)
|
674
700
|
|
@@ -694,8 +720,11 @@ class OpenAIService:
|
|
694
720
|
heartbeat_if_in_workflow("run agent streamed auto send")
|
695
721
|
|
696
722
|
async with mcp_server_context(mcp_server_params, mcp_timeout_seconds) as servers:
|
697
|
-
tools = [
|
698
|
-
|
723
|
+
tools = [
|
724
|
+
tool.to_oai_function_tool() if hasattr(tool, 'to_oai_function_tool') else tool # type: ignore[attr-defined]
|
725
|
+
for tool in tools
|
726
|
+
] if tools else []
|
727
|
+
handoffs = [Agent(**handoff.model_dump()) for handoff in handoffs] if handoffs else [] # type: ignore[misc]
|
699
728
|
agent_kwargs = {
|
700
729
|
"name": agent_name,
|
701
730
|
"instructions": agent_instructions,
|
@@ -708,7 +737,10 @@ class OpenAIService:
|
|
708
737
|
"tool_use_behavior": tool_use_behavior,
|
709
738
|
}
|
710
739
|
if model_settings is not None:
|
711
|
-
agent_kwargs["model_settings"] =
|
740
|
+
agent_kwargs["model_settings"] = (
|
741
|
+
model_settings.to_oai_model_settings() if hasattr(model_settings, 'to_oai_model_settings') # type: ignore[attr-defined]
|
742
|
+
else model_settings
|
743
|
+
)
|
712
744
|
if input_guardrails is not None:
|
713
745
|
agent_kwargs["input_guardrails"] = input_guardrails
|
714
746
|
if output_guardrails is not None:
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import base64
|
2
1
|
import os
|
2
|
+
import base64
|
3
3
|
import tempfile
|
4
4
|
|
5
5
|
from scale_gp import SGPClient
|
6
6
|
|
7
|
-
from agentex.lib.core.tracing.tracer import AsyncTracer
|
8
7
|
from agentex.lib.types.files import FileContentResponse
|
9
8
|
from agentex.lib.utils.logging import make_logger
|
10
9
|
from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
10
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
11
11
|
|
12
12
|
logger = make_logger(__name__)
|
13
13
|
|
@@ -91,7 +91,7 @@ class SGPService:
|
|
91
91
|
)
|
92
92
|
|
93
93
|
# Record metadata for tracing
|
94
|
-
span.output = {
|
94
|
+
span.output = { # type: ignore[union-attr]
|
95
95
|
"file_id": file_id,
|
96
96
|
"mime_type": result.mime_type,
|
97
97
|
"content_size": len(result.base64_content),
|
@@ -1,9 +1,9 @@
|
|
1
1
|
from typing import Any, Dict
|
2
2
|
|
3
3
|
from agentex import AsyncAgentex
|
4
|
-
from agentex.lib.core.tracing.tracer import AsyncTracer
|
5
4
|
from agentex.types.state import State
|
6
5
|
from agentex.lib.utils.logging import make_logger
|
6
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
7
7
|
|
8
8
|
logger = make_logger(__name__)
|
9
9
|
|
@@ -47,6 +47,10 @@ class StateService:
|
|
47
47
|
parent_span_id: str | None = None,
|
48
48
|
) -> State | None:
|
49
49
|
trace = self._tracer.trace(trace_id) if self._tracer else None
|
50
|
+
if trace is None:
|
51
|
+
# Handle case without tracing - implement the core logic here
|
52
|
+
return await self._agentex_client.states.retrieve(state_id)
|
53
|
+
|
50
54
|
async with trace.span(
|
51
55
|
parent_id=parent_span_id,
|
52
56
|
name="get_state",
|
@@ -2,33 +2,33 @@ import json
|
|
2
2
|
from typing import Literal
|
3
3
|
|
4
4
|
from agentex import AsyncAgentex
|
5
|
-
from agentex.lib.
|
6
|
-
from agentex.types.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
StreamTaskMessageDelta,
|
11
|
-
StreamTaskMessageFull,
|
12
|
-
StreamTaskMessageDone,
|
5
|
+
from agentex.lib.utils.logging import make_logger
|
6
|
+
from agentex.types.data_content import DataContent
|
7
|
+
from agentex.types.task_message import (
|
8
|
+
TaskMessage,
|
9
|
+
TaskMessageContent,
|
13
10
|
)
|
11
|
+
from agentex.types.text_content import TextContent
|
12
|
+
from agentex.types.reasoning_content import ReasoningContent
|
14
13
|
from agentex.types.task_message_delta import (
|
15
|
-
TextDelta,
|
16
14
|
DataDelta,
|
15
|
+
TextDelta,
|
17
16
|
ToolRequestDelta,
|
18
17
|
ToolResponseDelta,
|
19
|
-
ReasoningSummaryDelta,
|
20
18
|
ReasoningContentDelta,
|
19
|
+
ReasoningSummaryDelta,
|
21
20
|
)
|
22
|
-
from agentex.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
from agentex.types.task_message_update import (
|
22
|
+
TaskMessageDelta,
|
23
|
+
TaskMessageUpdate,
|
24
|
+
StreamTaskMessageDone,
|
25
|
+
StreamTaskMessageFull,
|
26
|
+
StreamTaskMessageDelta,
|
27
|
+
StreamTaskMessageStart,
|
27
28
|
)
|
28
|
-
from agentex.types.text_content import TextContent
|
29
29
|
from agentex.types.tool_request_content import ToolRequestContent
|
30
30
|
from agentex.types.tool_response_content import ToolResponseContent
|
31
|
-
from agentex.
|
31
|
+
from agentex.lib.core.adapters.streams.port import StreamRepository
|
32
32
|
|
33
33
|
logger = make_logger(__name__)
|
34
34
|
|
@@ -265,7 +265,7 @@ class StreamingTaskMessageContext:
|
|
265
265
|
elif isinstance(update, StreamTaskMessageFull):
|
266
266
|
await self._agentex_client.messages.update(
|
267
267
|
task_id=self.task_id,
|
268
|
-
message_id=update.parent_task_message.id,
|
268
|
+
message_id=update.parent_task_message.id, # type: ignore[union-attr]
|
269
269
|
content=update.content.model_dump(),
|
270
270
|
streaming_status="DONE",
|
271
271
|
)
|
@@ -306,7 +306,7 @@ class StreamingService:
|
|
306
306
|
Returns:
|
307
307
|
True if event was streamed successfully, False otherwise
|
308
308
|
"""
|
309
|
-
stream_topic = _get_stream_topic(update.parent_task_message.task_id)
|
309
|
+
stream_topic = _get_stream_topic(update.parent_task_message.task_id) # type: ignore[union-attr]
|
310
310
|
|
311
311
|
try:
|
312
312
|
await self._stream_repository.send_event(
|
@@ -1,8 +1,9 @@
|
|
1
1
|
from agentex import AsyncAgentex
|
2
|
-
from agentex.lib.core.tracing.tracer import AsyncTracer
|
3
2
|
from agentex.types.task import Task
|
3
|
+
from agentex.types.shared import DeleteResponse
|
4
4
|
from agentex.lib.utils.logging import make_logger
|
5
5
|
from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
6
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
6
7
|
|
7
8
|
logger = make_logger(__name__)
|
8
9
|
|
@@ -48,8 +49,13 @@ class TasksService:
|
|
48
49
|
task_name: str | None = None,
|
49
50
|
trace_id: str | None = None,
|
50
51
|
parent_span_id: str | None = None,
|
51
|
-
) -> Task:
|
52
|
+
) -> Task | DeleteResponse:
|
52
53
|
trace = self._tracer.trace(trace_id) if self._tracer else None
|
54
|
+
if trace is None:
|
55
|
+
# Handle case without tracing
|
56
|
+
response = await self._agentex_client.tasks.delete(task_id)
|
57
|
+
return Task(**response.model_dump())
|
58
|
+
|
53
59
|
async with trace.span(
|
54
60
|
parent_id=parent_span_id,
|
55
61
|
name="delete_task",
|
@@ -1,9 +1,10 @@
|
|
1
1
|
from typing import Any
|
2
|
-
|
2
|
+
|
3
3
|
from agentex.types.span import Span
|
4
4
|
from agentex.lib.utils.logging import make_logger
|
5
|
-
from agentex.lib.utils.model_utils import BaseModel
|
6
5
|
from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
6
|
+
from agentex.lib.utils.model_utils import BaseModel
|
7
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
7
8
|
|
8
9
|
logger = make_logger(__name__)
|
9
10
|
|
@@ -1,10 +1,10 @@
|
|
1
|
-
from datetime import datetime
|
2
1
|
from typing import Any
|
2
|
+
from datetime import datetime
|
3
3
|
|
4
4
|
from jinja2 import BaseLoader, Environment
|
5
5
|
|
6
|
-
from agentex.lib.core.tracing.tracer import AsyncTracer
|
7
6
|
from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
7
|
+
from agentex.lib.core.tracing.tracer import AsyncTracer
|
8
8
|
|
9
9
|
# Create a Jinja environment
|
10
10
|
JINJA_ENV = Environment(
|
@@ -38,6 +38,8 @@ class TemplatingService:
|
|
38
38
|
Returns:
|
39
39
|
The rendered template as a string
|
40
40
|
"""
|
41
|
+
if self.tracer is None:
|
42
|
+
raise RuntimeError("Tracer not initialized - ensure tracer is provided to TemplatingService")
|
41
43
|
trace = self.tracer.trace(trace_id)
|
42
44
|
async with trace.span(
|
43
45
|
parent_id=parent_span_id,
|
@@ -1,45 +1,45 @@
|
|
1
1
|
import httpx
|
2
|
-
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
|
3
2
|
from scale_gp import SGPClient, SGPClientError
|
4
3
|
|
5
|
-
from agentex import AsyncAgentex
|
6
|
-
from agentex.lib.core.
|
7
|
-
from agentex.lib.core.adapters.streams.adapter_redis import RedisStreamRepository
|
8
|
-
from agentex.lib.core.services.adk.acp.acp import ACPService
|
9
|
-
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
|
10
|
-
from agentex.lib.core.services.adk.events import EventsService
|
11
|
-
from agentex.lib.core.services.adk.messages import MessagesService
|
12
|
-
from agentex.lib.core.services.adk.providers.litellm import LiteLLMService
|
13
|
-
from agentex.lib.core.services.adk.providers.openai import OpenAIService
|
14
|
-
from agentex.lib.core.services.adk.providers.sgp import SGPService
|
4
|
+
from agentex import AsyncAgentex # noqa: F401
|
5
|
+
from agentex.lib.core.tracing import AsyncTracer
|
15
6
|
from agentex.lib.core.services.adk.state import StateService
|
16
|
-
from agentex.lib.core.services.adk.streaming import StreamingService
|
17
7
|
from agentex.lib.core.services.adk.tasks import TasksService
|
8
|
+
from agentex.lib.core.services.adk.events import EventsService
|
9
|
+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
|
10
|
+
from agentex.lib.core.services.adk.acp.acp import ACPService
|
18
11
|
from agentex.lib.core.services.adk.tracing import TracingService
|
12
|
+
from agentex.lib.core.services.adk.messages import MessagesService
|
13
|
+
from agentex.lib.core.services.adk.streaming import StreamingService
|
14
|
+
from agentex.lib.core.services.adk.providers.sgp import SGPService
|
15
|
+
from agentex.lib.core.adapters.llm.adapter_litellm import LiteLLMGateway
|
16
|
+
from agentex.lib.core.services.adk.providers.openai import OpenAIService
|
19
17
|
from agentex.lib.core.services.adk.utils.templating import TemplatingService
|
20
|
-
from agentex.lib.core.
|
21
|
-
from agentex.lib.core.
|
22
|
-
|
23
|
-
|
18
|
+
from agentex.lib.core.adapters.streams.adapter_redis import RedisStreamRepository
|
19
|
+
from agentex.lib.core.services.adk.providers.litellm import LiteLLMService
|
20
|
+
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
|
21
|
+
from agentex.lib.core.temporal.activities.adk.state_activities import StateActivities
|
22
|
+
from agentex.lib.core.temporal.activities.adk.tasks_activities import TasksActivities
|
24
23
|
from agentex.lib.core.temporal.activities.adk.events_activities import EventsActivities
|
24
|
+
from agentex.lib.core.temporal.activities.adk.acp.acp_activities import ACPActivities
|
25
|
+
from agentex.lib.core.temporal.activities.adk.tracing_activities import TracingActivities
|
25
26
|
from agentex.lib.core.temporal.activities.adk.messages_activities import MessagesActivities
|
26
|
-
from agentex.lib.core.temporal.activities.adk.
|
27
|
-
|
27
|
+
from agentex.lib.core.temporal.activities.adk.streaming_activities import (
|
28
|
+
StreamingActivities,
|
28
29
|
)
|
30
|
+
from agentex.lib.core.temporal.activities.adk.providers.sgp_activities import SGPActivities
|
29
31
|
from agentex.lib.core.temporal.activities.adk.providers.openai_activities import (
|
30
32
|
OpenAIActivities,
|
31
33
|
)
|
32
|
-
from agentex.lib.core.temporal.activities.adk.providers.sgp_activities import SGPActivities
|
33
|
-
from agentex.lib.core.temporal.activities.adk.state_activities import StateActivities
|
34
|
-
from agentex.lib.core.temporal.activities.adk.streaming_activities import (
|
35
|
-
StreamingActivities,
|
36
|
-
)
|
37
|
-
from agentex.lib.core.temporal.activities.adk.tasks_activities import TasksActivities
|
38
|
-
from agentex.lib.core.temporal.activities.adk.tracing_activities import TracingActivities
|
39
34
|
from agentex.lib.core.temporal.activities.adk.utils.templating_activities import (
|
40
35
|
TemplatingActivities,
|
41
36
|
)
|
42
|
-
from agentex.lib.core.
|
37
|
+
from agentex.lib.core.temporal.activities.adk.providers.litellm_activities import (
|
38
|
+
LiteLLMActivities,
|
39
|
+
)
|
40
|
+
from agentex.lib.core.temporal.activities.adk.agent_task_tracker_activities import (
|
41
|
+
AgentTaskTrackerActivities,
|
42
|
+
)
|
43
43
|
|
44
44
|
|
45
45
|
def get_all_activities(sgp_client=None):
|
@@ -204,7 +204,7 @@ def get_all_activities(sgp_client=None):
|
|
204
204
|
# SGP activities
|
205
205
|
if sgp_client is not None:
|
206
206
|
sgp_all_activities = [
|
207
|
-
sgp_activities.download_file_content,
|
207
|
+
sgp_activities.download_file_content, # type: ignore[union-attr]
|
208
208
|
]
|
209
209
|
activities.extend(sgp_all_activities)
|
210
210
|
|
@@ -3,13 +3,13 @@ from typing import Any, List
|
|
3
3
|
|
4
4
|
from temporalio import activity
|
5
5
|
|
6
|
-
from agentex.lib.core.services.adk.acp.acp import ACPService
|
7
|
-
from agentex.types.event import Event
|
8
|
-
from agentex.types.task_message import TaskMessage
|
9
|
-
from agentex.types.task_message_content import TaskMessageContent
|
10
6
|
from agentex.types.task import Task
|
7
|
+
from agentex.types.event import Event
|
11
8
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
12
9
|
from agentex.lib.utils.logging import make_logger
|
10
|
+
from agentex.types.task_message import TaskMessage
|
11
|
+
from agentex.types.task_message_content import TaskMessageContent
|
12
|
+
from agentex.lib.core.services.adk.acp.acp import ACPService
|
13
13
|
|
14
14
|
logger = make_logger(__name__)
|
15
15
|
|
@@ -2,10 +2,10 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from temporalio import activity
|
4
4
|
|
5
|
-
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
|
6
5
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
7
6
|
from agentex.lib.utils.logging import make_logger
|
8
7
|
from agentex.types.agent_task_tracker import AgentTaskTracker
|
8
|
+
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
|
9
9
|
|
10
10
|
logger = make_logger(__name__)
|
11
11
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
from typing import Optional
|
3
3
|
|
4
|
-
from agentex.lib.core.services.adk.agents import AgentsService
|
5
|
-
from agentex.types.agent import Agent
|
6
4
|
from temporalio import activity
|
7
5
|
|
6
|
+
from agentex.types.agent import Agent
|
8
7
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
9
8
|
from agentex.lib.utils.logging import make_logger
|
9
|
+
from agentex.lib.core.services.adk.agents import AgentsService
|
10
10
|
|
11
11
|
logger = make_logger(__name__)
|
12
12
|
|
@@ -2,10 +2,10 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from temporalio import activity
|
4
4
|
|
5
|
-
from agentex.lib.core.services.adk.events import EventsService
|
6
5
|
from agentex.types.event import Event
|
7
6
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
8
7
|
from agentex.lib.utils.logging import make_logger
|
8
|
+
from agentex.lib.core.services.adk.events import EventsService
|
9
9
|
|
10
10
|
logger = make_logger(__name__)
|
11
11
|
|
@@ -2,11 +2,11 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from temporalio import activity
|
4
4
|
|
5
|
-
from agentex.lib.core.services.adk.messages import MessagesService
|
6
|
-
from agentex.types.task_message import TaskMessage
|
7
|
-
from agentex.types.task_message_content import TaskMessageContent
|
8
5
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
9
6
|
from agentex.lib.utils.logging import make_logger
|
7
|
+
from agentex.types.task_message import TaskMessage
|
8
|
+
from agentex.types.task_message_content import TaskMessageContent
|
9
|
+
from agentex.lib.core.services.adk.messages import MessagesService
|
10
10
|
|
11
11
|
logger = make_logger(__name__)
|
12
12
|
|
@@ -2,11 +2,11 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from temporalio import activity
|
4
4
|
|
5
|
-
from agentex.lib.core.services.adk.providers.litellm import LiteLLMService
|
6
|
-
from agentex.lib.types.llm_messages import Completion, LLMConfig
|
7
|
-
from agentex.types.task_message import TaskMessage
|
8
|
-
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
9
5
|
from agentex.lib.utils import logging
|
6
|
+
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
7
|
+
from agentex.types.task_message import TaskMessage
|
8
|
+
from agentex.lib.types.llm_messages import LLMConfig, Completion
|
9
|
+
from agentex.lib.core.services.adk.providers.litellm import LiteLLMService
|
10
10
|
|
11
11
|
logger = logging.make_logger(__name__)
|
12
12
|
|
@@ -2,10 +2,10 @@ from enum import Enum
|
|
2
2
|
|
3
3
|
from temporalio import activity
|
4
4
|
|
5
|
-
from agentex.lib.core.services.adk.providers.sgp import SGPService
|
6
5
|
from agentex.lib.types.files import FileContentResponse
|
7
6
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
8
7
|
from agentex.lib.utils.logging import make_logger
|
8
|
+
from agentex.lib.core.services.adk.providers.sgp import SGPService
|
9
9
|
|
10
10
|
logger = make_logger(__name__)
|
11
11
|
|
@@ -3,10 +3,10 @@ from typing import Any
|
|
3
3
|
|
4
4
|
from temporalio import activity
|
5
5
|
|
6
|
-
from agentex.lib.core.services.adk.state import StateService
|
7
6
|
from agentex.types.state import State
|
8
7
|
from agentex.lib.types.tracing import BaseModelWithTraceParams
|
9
8
|
from agentex.lib.utils.logging import make_logger
|
9
|
+
from agentex.lib.core.services.adk.state import StateService
|
10
10
|
|
11
11
|
logger = make_logger(__name__)
|
12
12
|
|