agentex-sdk 0.4.22__py3-none-any.whl → 0.4.23__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/_version.py +1 -1
- agentex/lib/cli/handlers/run_handlers.py +4 -0
- agentex/lib/cli/templates/temporal/manifest.yaml.j2 +4 -0
- agentex/lib/core/services/adk/providers/openai.py +56 -83
- agentex/lib/core/temporal/workers/worker.py +1 -1
- agentex/lib/core/tracing/processors/sgp_tracing_processor.py +33 -0
- agentex/lib/environment_variables.py +5 -0
- agentex/lib/types/agent_configs.py +5 -0
- agentex/lib/utils/dev_tools/async_messages.py +13 -6
- {agentex_sdk-0.4.22.dist-info → agentex_sdk-0.4.23.dist-info}/METADATA +1 -1
- {agentex_sdk-0.4.22.dist-info → agentex_sdk-0.4.23.dist-info}/RECORD +14 -14
- {agentex_sdk-0.4.22.dist-info → agentex_sdk-0.4.23.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.4.22.dist-info → agentex_sdk-0.4.23.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.4.22.dist-info → agentex_sdk-0.4.23.dist-info}/licenses/LICENSE +0 -0
agentex/_version.py
CHANGED
@@ -389,6 +389,10 @@ def create_agent_environment(manifest: AgentManifest) -> dict[str, str]:
|
|
389
389
|
env_vars["WORKFLOW_NAME"] = temporal_config.name
|
390
390
|
env_vars["WORKFLOW_TASK_QUEUE"] = temporal_config.queue_name
|
391
391
|
|
392
|
+
# Set health check port from temporal config
|
393
|
+
if manifest.agent.temporal and manifest.agent.temporal.health_check_port is not None:
|
394
|
+
env_vars["HEALTH_CHECK_PORT"] = str(manifest.agent.temporal.health_check_port)
|
395
|
+
|
392
396
|
if agent_config.env:
|
393
397
|
for key, value in agent_config.env.items():
|
394
398
|
env_vars[key] = value
|
@@ -89,6 +89,10 @@ agent:
|
|
89
89
|
# Convention: <agent_name>_task_queue
|
90
90
|
queue_name: {{ queue_name }}
|
91
91
|
|
92
|
+
# Optional: Health check port for temporal worker
|
93
|
+
# Defaults to 80 if not specified
|
94
|
+
# health_check_port: 80
|
95
|
+
|
92
96
|
# Optional: Credentials mapping
|
93
97
|
# Maps Kubernetes secrets to environment variables
|
94
98
|
# Common credentials include:
|
@@ -12,12 +12,12 @@ from agents.exceptions import InputGuardrailTripwireTriggered, OutputGuardrailTr
|
|
12
12
|
from openai.types.responses import (
|
13
13
|
ResponseCompletedEvent,
|
14
14
|
ResponseTextDeltaEvent,
|
15
|
+
ResponseFunctionToolCall,
|
15
16
|
ResponseFunctionWebSearch,
|
16
17
|
ResponseOutputItemDoneEvent,
|
17
|
-
ResponseReasoningTextDoneEvent,
|
18
18
|
ResponseCodeInterpreterToolCall,
|
19
|
-
|
20
|
-
|
19
|
+
ResponseReasoningSummaryPartDoneEvent,
|
20
|
+
ResponseReasoningSummaryPartAddedEvent,
|
21
21
|
ResponseReasoningSummaryTextDeltaEvent,
|
22
22
|
)
|
23
23
|
|
@@ -29,7 +29,6 @@ from agentex.lib.utils.temporal import heartbeat_if_in_workflow
|
|
29
29
|
from agentex.lib.core.tracing.tracer import AsyncTracer
|
30
30
|
from agentex.types.task_message_delta import (
|
31
31
|
TextDelta,
|
32
|
-
ReasoningContentDelta,
|
33
32
|
ReasoningSummaryDelta,
|
34
33
|
)
|
35
34
|
from agentex.types.task_message_update import (
|
@@ -691,7 +690,7 @@ class OpenAIService:
|
|
691
690
|
if self.agentex_client is None:
|
692
691
|
raise ValueError("Agentex client must be provided for auto_send methods")
|
693
692
|
|
694
|
-
tool_call_map: dict[str,
|
693
|
+
tool_call_map: dict[str, ResponseFunctionToolCall] = {}
|
695
694
|
|
696
695
|
if self.tracer is None:
|
697
696
|
raise RuntimeError("Tracer not initialized - ensure tracer is provided to OpenAIService")
|
@@ -756,6 +755,8 @@ class OpenAIService:
|
|
756
755
|
|
757
756
|
item_id_to_streaming_context: dict[str, StreamingTaskMessageContext] = {}
|
758
757
|
unclosed_item_ids: set[str] = set()
|
758
|
+
# Simple string to accumulate reasoning summary
|
759
|
+
current_reasoning_summary: str = ""
|
759
760
|
|
760
761
|
try:
|
761
762
|
# Process streaming events with TaskMessage creation
|
@@ -848,37 +849,42 @@ class OpenAIService:
|
|
848
849
|
type="delta",
|
849
850
|
),
|
850
851
|
)
|
851
|
-
|
852
|
-
elif isinstance(event.data,
|
853
|
-
#
|
852
|
+
# Reasoning step one: new summary part added
|
853
|
+
elif isinstance(event.data, ResponseReasoningSummaryPartAddedEvent):
|
854
|
+
# We need to create a new streaming context for this reasoning item
|
854
855
|
item_id = event.data.item_id
|
855
|
-
|
856
|
+
|
857
|
+
# Reset the reasoning summary string
|
858
|
+
current_reasoning_summary = ""
|
859
|
+
|
860
|
+
streaming_context = self.streaming_service.streaming_task_message_context(
|
861
|
+
task_id=task_id,
|
862
|
+
initial_content=ReasoningContent(
|
863
|
+
author="agent",
|
864
|
+
summary=[],
|
865
|
+
content=[],
|
866
|
+
type="reasoning",
|
867
|
+
style="active",
|
868
|
+
),
|
869
|
+
)
|
856
870
|
|
857
|
-
#
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
style="active",
|
868
|
-
),
|
869
|
-
)
|
870
|
-
# Open the streaming context
|
871
|
-
item_id_to_streaming_context[item_id] = await streaming_context.open()
|
872
|
-
unclosed_item_ids.add(item_id)
|
873
|
-
else:
|
874
|
-
streaming_context = item_id_to_streaming_context[item_id]
|
871
|
+
# Replace the existing streaming context (if it exists)
|
872
|
+
# Why do we replace? Cause all the reasoning parts use the same item_id!
|
873
|
+
item_id_to_streaming_context[item_id] = await streaming_context.open()
|
874
|
+
unclosed_item_ids.add(item_id)
|
875
|
+
|
876
|
+
# Reasoning step two: handling summary text delta
|
877
|
+
elif isinstance(event.data, ResponseReasoningSummaryTextDeltaEvent):
|
878
|
+
# Accumulate the delta into the string
|
879
|
+
current_reasoning_summary += event.data.delta
|
880
|
+
streaming_context = item_id_to_streaming_context[item_id]
|
875
881
|
|
876
882
|
# Stream the summary delta through the streaming service
|
877
883
|
await streaming_context.stream_update(
|
878
884
|
update=StreamTaskMessageDelta(
|
879
885
|
parent_task_message=streaming_context.task_message,
|
880
886
|
delta=ReasoningSummaryDelta(
|
881
|
-
summary_index=summary_index,
|
887
|
+
summary_index=event.data.summary_index,
|
882
888
|
summary_delta=event.data.delta,
|
883
889
|
type="reasoning_summary",
|
884
890
|
),
|
@@ -886,65 +892,32 @@ class OpenAIService:
|
|
886
892
|
),
|
887
893
|
)
|
888
894
|
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
#
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
style="active",
|
905
|
-
),
|
906
|
-
)
|
907
|
-
# Open the streaming context
|
908
|
-
item_id_to_streaming_context[item_id] = await streaming_context.open()
|
909
|
-
unclosed_item_ids.add(item_id)
|
910
|
-
else:
|
911
|
-
streaming_context = item_id_to_streaming_context[item_id]
|
912
|
-
|
913
|
-
# Stream the content delta through the streaming service
|
895
|
+
# Reasoning step three: handling summary text done, closing the streaming context
|
896
|
+
elif isinstance(event.data, ResponseReasoningSummaryPartDoneEvent):
|
897
|
+
# Handle reasoning summary text completion
|
898
|
+
streaming_context = item_id_to_streaming_context[item_id]
|
899
|
+
|
900
|
+
# Create the complete reasoning content with the accumulated summary
|
901
|
+
complete_reasoning_content = ReasoningContent(
|
902
|
+
author="agent",
|
903
|
+
summary=[current_reasoning_summary],
|
904
|
+
content=[],
|
905
|
+
type="reasoning",
|
906
|
+
style="static",
|
907
|
+
)
|
908
|
+
|
909
|
+
# Send a full message update with the complete reasoning content
|
914
910
|
await streaming_context.stream_update(
|
915
|
-
update=
|
911
|
+
update=StreamTaskMessageFull(
|
916
912
|
parent_task_message=streaming_context.task_message,
|
917
|
-
|
918
|
-
|
919
|
-
content_delta=event.data.delta,
|
920
|
-
type="reasoning_content",
|
921
|
-
),
|
922
|
-
type="delta",
|
913
|
+
content=complete_reasoning_content,
|
914
|
+
type="full",
|
923
915
|
),
|
924
916
|
)
|
925
|
-
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
summary_index = event.data.summary_index
|
930
|
-
|
931
|
-
# We do NOT close the streaming context here as there can be multiple
|
932
|
-
# reasoning summaries. The context will be closed when the entire
|
933
|
-
# output item is done (ResponseOutputItemDoneEvent)
|
934
|
-
|
935
|
-
# You would think they would use the event ResponseReasoningSummaryPartDoneEvent
|
936
|
-
# to close the streaming context, but they do!!!
|
937
|
-
# They output both a ResponseReasoningSummaryTextDoneEvent and a ResponseReasoningSummaryPartDoneEvent
|
938
|
-
# I have no idea why they do this.
|
939
|
-
|
940
|
-
elif isinstance(event.data, ResponseReasoningTextDoneEvent):
|
941
|
-
# Handle reasoning content text completion
|
942
|
-
item_id = event.data.item_id
|
943
|
-
content_index = event.data.content_index
|
944
|
-
|
945
|
-
# We do NOT close the streaming context here as there can be multiple
|
946
|
-
# reasoning content texts. The context will be closed when the entire
|
947
|
-
# output item is done (ResponseOutputItemDoneEvent)
|
917
|
+
|
918
|
+
await streaming_context.close()
|
919
|
+
unclosed_item_ids.discard(item_id)
|
920
|
+
|
948
921
|
|
949
922
|
elif isinstance(event.data, ResponseOutputItemDoneEvent):
|
950
923
|
# Handle item completion
|
@@ -112,7 +112,7 @@ class AgentexWorker:
|
|
112
112
|
task_queue,
|
113
113
|
max_workers: int = 10,
|
114
114
|
max_concurrent_activities: int = 10,
|
115
|
-
health_check_port: int =
|
115
|
+
health_check_port: int = int(os.environ.get("HEALTH_CHECK_PORT")),
|
116
116
|
plugins: list = [],
|
117
117
|
):
|
118
118
|
self.task_queue = task_queue
|
@@ -8,6 +8,7 @@ from scale_gp_beta.lib.tracing.span import Span as SGPSpan
|
|
8
8
|
from agentex.types.span import Span
|
9
9
|
from agentex.lib.types.tracing import SGPTracingProcessorConfig
|
10
10
|
from agentex.lib.utils.logging import make_logger
|
11
|
+
from agentex.lib.environment_variables import EnvironmentVariables
|
11
12
|
from agentex.lib.core.tracing.processors.tracing_processor_interface import (
|
12
13
|
SyncTracingProcessor,
|
13
14
|
AsyncTracingProcessor,
|
@@ -24,9 +25,24 @@ class SGPSyncTracingProcessor(SyncTracingProcessor):
|
|
24
25
|
disabled=disabled,
|
25
26
|
)
|
26
27
|
self._spans: dict[str, SGPSpan] = {}
|
28
|
+
self.env_vars = EnvironmentVariables.refresh()
|
29
|
+
|
30
|
+
def _add_source_to_span(self, span: Span) -> None:
|
31
|
+
if span.data is None:
|
32
|
+
span.data = {}
|
33
|
+
if isinstance(span.data, dict):
|
34
|
+
span.data["__source__"] = "agentex"
|
35
|
+
if self.env_vars.ACP_TYPE is not None:
|
36
|
+
span.data["__acp_type__"] = self.env_vars.ACP_TYPE
|
37
|
+
if self.env_vars.AGENT_NAME is not None:
|
38
|
+
span.data["__agent_name__"] = self.env_vars.AGENT_NAME
|
39
|
+
if self.env_vars.AGENT_ID is not None:
|
40
|
+
span.data["__agent_id__"] = self.env_vars.AGENT_ID
|
27
41
|
|
28
42
|
@override
|
29
43
|
def on_span_start(self, span: Span) -> None:
|
44
|
+
self._add_source_to_span(span)
|
45
|
+
|
30
46
|
sgp_span = create_span(
|
31
47
|
name=span.name,
|
32
48
|
span_id=span.id,
|
@@ -50,6 +66,7 @@ class SGPSyncTracingProcessor(SyncTracingProcessor):
|
|
50
66
|
)
|
51
67
|
return
|
52
68
|
|
69
|
+
self._add_source_to_span(span)
|
53
70
|
sgp_span.output = span.output # type: ignore[assignment]
|
54
71
|
sgp_span.metadata = span.data # type: ignore[assignment]
|
55
72
|
sgp_span.end_time = span.end_time.isoformat() # type: ignore[union-attr]
|
@@ -70,9 +87,23 @@ class SGPAsyncTracingProcessor(AsyncTracingProcessor):
|
|
70
87
|
if not self.disabled
|
71
88
|
else None
|
72
89
|
)
|
90
|
+
self.env_vars = EnvironmentVariables.refresh()
|
91
|
+
|
92
|
+
def _add_source_to_span(self, span: Span) -> None:
|
93
|
+
if span.data is None:
|
94
|
+
span.data = {}
|
95
|
+
if isinstance(span.data, dict):
|
96
|
+
span.data["__source__"] = "agentex"
|
97
|
+
if self.env_vars.ACP_TYPE is not None:
|
98
|
+
span.data["__acp_type__"] = self.env_vars.ACP_TYPE
|
99
|
+
if self.env_vars.AGENT_NAME is not None:
|
100
|
+
span.data["__agent_name__"] = self.env_vars.AGENT_NAME
|
101
|
+
if self.env_vars.AGENT_ID is not None:
|
102
|
+
span.data["__agent_id__"] = self.env_vars.AGENT_ID
|
73
103
|
|
74
104
|
@override
|
75
105
|
async def on_span_start(self, span: Span) -> None:
|
106
|
+
self._add_source_to_span(span)
|
76
107
|
sgp_span = create_span(
|
77
108
|
name=span.name,
|
78
109
|
span_id=span.id,
|
@@ -85,6 +116,7 @@ class SGPAsyncTracingProcessor(AsyncTracingProcessor):
|
|
85
116
|
sgp_span.start_time = span.start_time.isoformat() # type: ignore[union-attr]
|
86
117
|
|
87
118
|
if self.disabled:
|
119
|
+
logger.warning("SGP is disabled, skipping span upsert")
|
88
120
|
return
|
89
121
|
await self.sgp_async_client.spans.upsert_batch( # type: ignore[union-attr]
|
90
122
|
items=[sgp_span.to_request_params()]
|
@@ -101,6 +133,7 @@ class SGPAsyncTracingProcessor(AsyncTracingProcessor):
|
|
101
133
|
)
|
102
134
|
return
|
103
135
|
|
136
|
+
self._add_source_to_span(span)
|
104
137
|
sgp_span.output = span.output # type: ignore[assignment]
|
105
138
|
sgp_span.metadata = span.data # type: ignore[assignment]
|
106
139
|
sgp_span.end_time = span.end_time.isoformat() # type: ignore[union-attr]
|
@@ -32,6 +32,8 @@ class EnvVarKeys(str, Enum):
|
|
32
32
|
# Workflow Configuration
|
33
33
|
WORKFLOW_NAME = "WORKFLOW_NAME"
|
34
34
|
WORKFLOW_TASK_QUEUE = "WORKFLOW_TASK_QUEUE"
|
35
|
+
# Temporal Worker Configuration
|
36
|
+
HEALTH_CHECK_PORT = "HEALTH_CHECK_PORT"
|
35
37
|
# Auth Configuration
|
36
38
|
AUTH_PRINCIPAL_B64 = "AUTH_PRINCIPAL_B64"
|
37
39
|
# Build Information
|
@@ -65,6 +67,9 @@ class EnvironmentVariables(BaseModel):
|
|
65
67
|
# Workflow Configuration
|
66
68
|
WORKFLOW_TASK_QUEUE: str | None = None
|
67
69
|
WORKFLOW_NAME: str | None = None
|
70
|
+
# Temporal Worker Configuration
|
71
|
+
HEALTH_CHECK_PORT: int = 80
|
72
|
+
# Auth Configuration
|
68
73
|
AUTH_PRINCIPAL_B64: str | None = None
|
69
74
|
# Build Information
|
70
75
|
BUILD_INFO_PATH: str | None = None
|
@@ -45,6 +45,7 @@ class TemporalConfig(BaseModel):
|
|
45
45
|
enabled: Whether this agent uses Temporal workflows
|
46
46
|
workflow: The temporal workflow configuration
|
47
47
|
workflows: The list of temporal workflow configurations
|
48
|
+
health_check_port: Port for temporal worker health check endpoint
|
48
49
|
"""
|
49
50
|
|
50
51
|
enabled: bool = Field(
|
@@ -58,6 +59,10 @@ class TemporalConfig(BaseModel):
|
|
58
59
|
default=None,
|
59
60
|
description="List of temporal workflow configurations. Used when enabled=true.",
|
60
61
|
)
|
62
|
+
health_check_port: int | None = Field(
|
63
|
+
default=None,
|
64
|
+
description="Port for temporal worker health check endpoint. Defaults to 80 if not specified.",
|
65
|
+
)
|
61
66
|
|
62
67
|
@validator("workflows")
|
63
68
|
def validate_workflows_not_empty(cls, v):
|
@@ -49,8 +49,8 @@ def print_task_message(
|
|
49
49
|
|
50
50
|
# Skip empty reasoning messages
|
51
51
|
if isinstance(message.content, ReasoningContent):
|
52
|
-
has_summary = message.content.summary and any(s for s in message.content.summary if s)
|
53
|
-
has_content = message.content.content and any(c for c in message.content.content if c)
|
52
|
+
has_summary = bool(message.content.summary) and any(s for s in message.content.summary if s)
|
53
|
+
has_content = bool(message.content.content) and any(c for c in message.content.content if c) if message.content.content is not None else False
|
54
54
|
if not has_summary and not has_content:
|
55
55
|
return
|
56
56
|
|
@@ -135,18 +135,19 @@ def print_task_message(
|
|
135
135
|
|
136
136
|
if rich_print and console:
|
137
137
|
author_color = "bright_cyan" if message.content.author == "user" else "green"
|
138
|
-
title = f"[bold {author_color}]{message.content.author.upper()}[/bold {author_color}] [{timestamp}]"
|
139
138
|
|
140
|
-
# Use different border styles for
|
139
|
+
# Use different border styles and colors for different content types
|
141
140
|
if content_type == "tool_request":
|
142
141
|
border_style = "yellow"
|
143
142
|
elif content_type == "tool_response":
|
144
143
|
border_style = "bright_green"
|
145
144
|
elif content_type == "reasoning":
|
146
145
|
border_style = "bright_magenta"
|
146
|
+
author_color = "bright_magenta" # Also make the author text magenta
|
147
147
|
else:
|
148
148
|
border_style = author_color
|
149
|
-
|
149
|
+
|
150
|
+
title = f"[bold {author_color}]{message.content.author.upper()}[/bold {author_color}] [{timestamp}]"
|
150
151
|
panel = Panel(Markdown(content), title=title, border_style=border_style, width=80)
|
151
152
|
console.print(panel)
|
152
153
|
else:
|
@@ -329,7 +330,7 @@ def subscribe_to_async_task_messages(
|
|
329
330
|
|
330
331
|
# Deserialize the discriminated union TaskMessageUpdate based on the "type" field
|
331
332
|
message_type = task_message_update_data.get("type", "unknown")
|
332
|
-
|
333
|
+
|
333
334
|
# Handle different message types for streaming progress
|
334
335
|
if message_type == "start":
|
335
336
|
task_message_update = StreamTaskMessageStart.model_validate(task_message_update_data)
|
@@ -359,6 +360,9 @@ def subscribe_to_async_task_messages(
|
|
359
360
|
if index in active_spinners:
|
360
361
|
active_spinners[index].stop()
|
361
362
|
del active_spinners[index]
|
363
|
+
# Ensure clean line after spinner
|
364
|
+
if print_messages:
|
365
|
+
print()
|
362
366
|
|
363
367
|
if task_message_update.parent_task_message and task_message_update.parent_task_message.id:
|
364
368
|
finished_message = client.messages.retrieve(task_message_update.parent_task_message.id)
|
@@ -373,6 +377,9 @@ def subscribe_to_async_task_messages(
|
|
373
377
|
if index in active_spinners:
|
374
378
|
active_spinners[index].stop()
|
375
379
|
del active_spinners[index]
|
380
|
+
# Ensure clean line after spinner
|
381
|
+
if print_messages:
|
382
|
+
print()
|
376
383
|
|
377
384
|
if task_message_update.parent_task_message and task_message_update.parent_task_message.id:
|
378
385
|
finished_message = client.messages.retrieve(task_message_update.parent_task_message.id)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.23
|
4
4
|
Summary: The official Python library for the agentex API
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/agentex-python
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/agentex-python
|
@@ -11,7 +11,7 @@ agentex/_resource.py,sha256=S1t7wmR5WUvoDIhZjo_x-E7uoTJBynJ3d8tPJMQYdjw,1106
|
|
11
11
|
agentex/_response.py,sha256=Tb9zazsnemO2rTxWtBjAD5WBqlhli5ZaXGbiKgdu5DE,28794
|
12
12
|
agentex/_streaming.py,sha256=FNGJExRCF-vTRUZHFKUfoAWFhDGOB3XbioVCF37Jr7E,10104
|
13
13
|
agentex/_types.py,sha256=lO491FSd7vM_uBp7-TvItbauEAH8SsEPYcyNO_5lKGM,7297
|
14
|
-
agentex/_version.py,sha256=
|
14
|
+
agentex/_version.py,sha256=4njgHZ4Kzii3zftW-zFjNSDQOCBq1h6iuX7jYqkNa6s,159
|
15
15
|
agentex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
agentex/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
|
17
17
|
agentex/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
|
@@ -27,7 +27,7 @@ agentex/_utils/_typing.py,sha256=fb420NYkXitEaod2CiEH-hCtzG1z9WKUQiFtuukHtr4,496
|
|
27
27
|
agentex/_utils/_utils.py,sha256=D2QE7mVPNEJzaB50u8rvDQAUDS5jx7JoeFD7zdj-TeI,12231
|
28
28
|
agentex/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
29
29
|
agentex/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
agentex/lib/environment_variables.py,sha256=
|
30
|
+
agentex/lib/environment_variables.py,sha256=IYUlG6a7r8f99FhNMuXnzQSg5WRFqsZtrtYMpIUqG4c,3574
|
31
31
|
agentex/lib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
agentex/lib/adk/__init__.py,sha256=6qv_lmJK5n-MPDQyYpeNvEMJxfdIxVAUcb_2LohJHmM,1210
|
33
33
|
agentex/lib/adk/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -64,7 +64,7 @@ agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
64
64
|
agentex/lib/cli/handlers/agent_handlers.py,sha256=xy2kXo7poV270yFLyqXNbZ79d_sq_vl5JAs93okYMHY,5604
|
65
65
|
agentex/lib/cli/handlers/cleanup_handlers.py,sha256=T6ekNCBr2FV19r4jZiKSeoheQWihy2H1Q6fvWUVeUiw,7073
|
66
66
|
agentex/lib/cli/handlers/deploy_handlers.py,sha256=ca1WaLiY_1IzUN2JNay8noW7MaVk66Zow73vwEzFs20,16215
|
67
|
-
agentex/lib/cli/handlers/run_handlers.py,sha256=
|
67
|
+
agentex/lib/cli/handlers/run_handlers.py,sha256=jhkUdiSz-ZL5NLOtgdUzUboxZeobJdUmjnF2lArSiig,15815
|
68
68
|
agentex/lib/cli/handlers/secret_handlers.py,sha256=hozcJJwWfECFtv_SdQnThcrhnKsiBm3y1jG1MqxVcoc,24851
|
69
69
|
agentex/lib/cli/templates/default/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
70
70
|
agentex/lib/cli/templates/default/Dockerfile-uv.j2,sha256=9-xbz3mh5yGuSxtQ6FRltzY45OyUzvi1ZmlfwOioK-M,1085
|
@@ -92,7 +92,7 @@ agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=N1Z73jb8pnxsjP9zbs-tSyNH
|
|
92
92
|
agentex/lib/cli/templates/temporal/README.md.j2,sha256=xIR3j97RA2F2x1PjfJTJ83YhoU108vS9WO1bZmM1vj8,10855
|
93
93
|
agentex/lib/cli/templates/temporal/dev.ipynb.j2,sha256=8xY82gVfQ0mhzlEZzI4kLqIXCF19YgimLnpEirDMX8I,3395
|
94
94
|
agentex/lib/cli/templates/temporal/environments.yaml.j2,sha256=zu7-nGRt_LF3qmWFxR_izTUOYQXuDZeypEVa03kVW10,2096
|
95
|
-
agentex/lib/cli/templates/temporal/manifest.yaml.j2,sha256=
|
95
|
+
agentex/lib/cli/templates/temporal/manifest.yaml.j2,sha256=rDN3UXlk2hc28J3cTxxAzK8he-m9rKl3R_WTW8OazA4,4690
|
96
96
|
agentex/lib/cli/templates/temporal/pyproject.toml.j2,sha256=MoR1g6KnGOQrXWOXhFKMw561kgpxy0tdom0KLtQe8A8,548
|
97
97
|
agentex/lib/cli/templates/temporal/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
|
98
98
|
agentex/lib/cli/templates/temporal/project/acp.py.j2,sha256=dz51AJqqXAbqa0TSwRS6PXU0HwqllvYeCGYEreU9zSM,2472
|
@@ -134,7 +134,7 @@ agentex/lib/core/services/adk/acp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
134
134
|
agentex/lib/core/services/adk/acp/acp.py,sha256=baMH0lL5OGvCJE2Sk97i03jtfoRNB3g7S6aOD42jEMI,10971
|
135
135
|
agentex/lib/core/services/adk/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
136
136
|
agentex/lib/core/services/adk/providers/litellm.py,sha256=Ha7t71sxEdhi32uSDN-WN_Gy8F075W_sCUpRvhODbLI,10044
|
137
|
-
agentex/lib/core/services/adk/providers/openai.py,sha256=
|
137
|
+
agentex/lib/core/services/adk/providers/openai.py,sha256=OVBBAYoN3Ned4hjprcflk7fBiz9Kh9JoyI4Ox4sDIPI,51978
|
138
138
|
agentex/lib/core/services/adk/providers/sgp.py,sha256=biwoRD-ojUi1dpb9nHl1kJozO0PxqUpAwGysx-ZEnjw,3704
|
139
139
|
agentex/lib/core/services/adk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
140
140
|
agentex/lib/core/services/adk/utils/templating.py,sha256=6Zv8XDhNfmE-xW307wzeQCLYqpVajR3IX8DSD2Hyc7c,2027
|
@@ -163,14 +163,14 @@ agentex/lib/core/temporal/services/temporal_task_service.py,sha256=W0L2GkSWwO2WZ
|
|
163
163
|
agentex/lib/core/temporal/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
164
|
agentex/lib/core/temporal/types/workflow.py,sha256=o8lBUloI44NTYFfbA1BLgzUneyN7aLbt042Eq_9OKo8,89
|
165
165
|
agentex/lib/core/temporal/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
|
-
agentex/lib/core/temporal/workers/worker.py,sha256=
|
166
|
+
agentex/lib/core/temporal/workers/worker.py,sha256=AtMBVMJMbGyLHg4NhpRic93y36SKGOYYxnrvGMdhWHM,8204
|
167
167
|
agentex/lib/core/temporal/workflows/workflow.py,sha256=ZoWsrNPup69RnMHnuks1DRy9YsmK_nYdjsOosYVfFxw,723
|
168
168
|
agentex/lib/core/tracing/__init__.py,sha256=07j9IRgZWFtZhdkk01l1nvaC5aCpygLWy94yXpYUZbM,229
|
169
169
|
agentex/lib/core/tracing/trace.py,sha256=b-TnBMEdUsZzKq2jfXU-GvFNxrfm6l_-YJtcw1nhohU,8952
|
170
170
|
agentex/lib/core/tracing/tracer.py,sha256=P2YGyAwQ82PtRjxiA0bnqbEePg_CVqpEngc9y8B2TAI,1846
|
171
171
|
agentex/lib/core/tracing/tracing_processor_manager.py,sha256=jIQJeq0G0vew5bVKTOycOb9YWqGr6xm52vhuKVNMYPc,3779
|
172
172
|
agentex/lib/core/tracing/processors/agentex_tracing_processor.py,sha256=DPC4gfrPWjMNjR2wbhHbMGOYHz-Ouadi-YyuTqFqFf0,3661
|
173
|
-
agentex/lib/core/tracing/processors/sgp_tracing_processor.py,sha256=
|
173
|
+
agentex/lib/core/tracing/processors/sgp_tracing_processor.py,sha256=U8S2TDX9jxqGJb7ALTQOb8wlbgD_Fio1zPlNgHopF1w,5628
|
174
174
|
agentex/lib/core/tracing/processors/tracing_processor_interface.py,sha256=IY-9YrPm4BESP3e7_vMi0_lh_jomP6CxVyrSFDX0UBk,861
|
175
175
|
agentex/lib/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
176
176
|
agentex/lib/sdk/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -205,7 +205,7 @@ agentex/lib/sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3h
|
|
205
205
|
agentex/lib/sdk/utils/messages.py,sha256=xrBg3ujn-8egw4hNDNMHDj2lE18tPjVAqI0gO_oBJLo,8354
|
206
206
|
agentex/lib/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
207
207
|
agentex/lib/types/acp.py,sha256=BfRF4Fr1xUcKxZQhAysm2qagideSRjtqActO_kRkQMU,3974
|
208
|
-
agentex/lib/types/agent_configs.py,sha256=
|
208
|
+
agentex/lib/types/agent_configs.py,sha256=AV5oEGwxghNf58_H9Xy72fISqWaU8D0UaYZycZ75y9Q,3047
|
209
209
|
agentex/lib/types/agent_results.py,sha256=ev6WnPLfZRbhy2HnBmdIrZq1ExVeaweXoLRxYGspyWM,653
|
210
210
|
agentex/lib/types/converters.py,sha256=IKywnGlsGwQ0fhr9t60c5rKpi63N1Oj8JzD4NeCB6SI,2285
|
211
211
|
agentex/lib/types/credentials.py,sha256=k6gtiIqSsKuS8vgucgQAHzb8oUlFdTj4CLtU69sk6Wg,1442
|
@@ -229,7 +229,7 @@ agentex/lib/utils/regex.py,sha256=Y3VcehCznAqa59D4WTwK_ki722oudHBlFqBk0I930zo,21
|
|
229
229
|
agentex/lib/utils/registration.py,sha256=2W3tKPJh23lLM26jVI0LBzkcmgXljVtDzL2yEnqf58U,4127
|
230
230
|
agentex/lib/utils/temporal.py,sha256=sXo8OPMMXiyrF7OSBCJBuN_ufyQOD2bLOXgDbVZoyds,292
|
231
231
|
agentex/lib/utils/dev_tools/__init__.py,sha256=oaHxw6ymfhNql-kzXHv3NWVHuqD4fHumasNXJG7kHTU,261
|
232
|
-
agentex/lib/utils/dev_tools/async_messages.py,sha256=
|
232
|
+
agentex/lib/utils/dev_tools/async_messages.py,sha256=NWzjhzQLBddA8KnGF3OdOAqHJM3Cin-9EJsLht4dgi4,20085
|
233
233
|
agentex/resources/__init__.py,sha256=74rMqWBzQ2dSrKQqsrd7-jskPws0O_ogkFltvZO3HoU,3265
|
234
234
|
agentex/resources/agents.py,sha256=gpITPi5moZ0QtUWByGqz1Ciqp9n42dpkjQ4DAafiQWM,47173
|
235
235
|
agentex/resources/events.py,sha256=Zc9JhUm3bq2VFnBAolC0M7KZernzj1AjZ_vj0ibP4GY,10412
|
@@ -304,8 +304,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
|
|
304
304
|
agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
|
305
305
|
agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
|
306
306
|
agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
|
307
|
-
agentex_sdk-0.4.
|
308
|
-
agentex_sdk-0.4.
|
309
|
-
agentex_sdk-0.4.
|
310
|
-
agentex_sdk-0.4.
|
311
|
-
agentex_sdk-0.4.
|
307
|
+
agentex_sdk-0.4.23.dist-info/METADATA,sha256=oBtmlCZloXwosUBQxg3WLdSp10XwrslU80xcqTr4noI,15198
|
308
|
+
agentex_sdk-0.4.23.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
309
|
+
agentex_sdk-0.4.23.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
|
310
|
+
agentex_sdk-0.4.23.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
311
|
+
agentex_sdk-0.4.23.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|