agentex-sdk 0.4.10__py3-none-any.whl → 0.4.11__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/_base_client.py +3 -3
- agentex/_compat.py +48 -48
- agentex/_models.py +41 -41
- agentex/_types.py +35 -1
- agentex/_utils/__init__.py +9 -2
- agentex/_utils/_compat.py +45 -0
- agentex/_utils/_datetime_parse.py +136 -0
- agentex/_utils/_transform.py +11 -1
- agentex/_utils/_typing.py +6 -1
- agentex/_utils/_utils.py +0 -1
- agentex/_version.py +1 -1
- agentex/lib/adk/providers/_modules/openai.py +42 -0
- agentex/lib/cli/templates/temporal/README.md.j2 +18 -2
- agentex/lib/cli/templates/temporal/project/activities.py.j2 +77 -0
- agentex/lib/cli/templates/temporal/project/run_worker.py.j2 +3 -1
- agentex/lib/core/services/adk/providers/openai.py +126 -7
- agentex/lib/core/temporal/activities/adk/providers/openai_activities.py +302 -36
- agentex/types/reasoning_content_param.py +4 -3
- {agentex_sdk-0.4.10.dist-info → agentex_sdk-0.4.11.dist-info}/METADATA +1 -1
- {agentex_sdk-0.4.10.dist-info → agentex_sdk-0.4.11.dist-info}/RECORD +23 -20
- {agentex_sdk-0.4.10.dist-info → agentex_sdk-0.4.11.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.4.10.dist-info → agentex_sdk-0.4.11.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.4.10.dist-info → agentex_sdk-0.4.11.dist-info}/licenses/LICENSE +0 -0
@@ -3,12 +3,14 @@ import base64
|
|
3
3
|
from collections.abc import Callable
|
4
4
|
from contextlib import AsyncExitStack, asynccontextmanager
|
5
5
|
from enum import Enum
|
6
|
-
from typing import Any, Literal, Optional
|
6
|
+
from typing import Any, Literal, Optional
|
7
7
|
|
8
8
|
from pydantic import Field, PrivateAttr
|
9
9
|
|
10
10
|
import cloudpickle
|
11
11
|
from agents import RunContextWrapper, RunResult, RunResultStreaming
|
12
|
+
from agents.guardrail import InputGuardrail, OutputGuardrail
|
13
|
+
from agents.exceptions import InputGuardrailTripwireTriggered, OutputGuardrailTripwireTriggered
|
12
14
|
from agents.mcp import MCPServerStdio, MCPServerStdioParams
|
13
15
|
from agents.model_settings import ModelSettings as OAIModelSettings
|
14
16
|
from agents.tool import FunctionTool as OAIFunctionTool
|
@@ -16,7 +18,6 @@ from mcp import StdioServerParameters
|
|
16
18
|
from openai.types.responses.response_includable import ResponseIncludable
|
17
19
|
from openai.types.shared.reasoning import Reasoning
|
18
20
|
from temporalio import activity
|
19
|
-
|
20
21
|
from agentex.lib.core.services.adk.providers.openai import OpenAIService
|
21
22
|
|
22
23
|
# Local imports
|
@@ -133,6 +134,150 @@ class FunctionTool(BaseModelWithTraceParams):
|
|
133
134
|
return OAIFunctionTool(**data)
|
134
135
|
|
135
136
|
|
137
|
+
class TemporalInputGuardrail(BaseModelWithTraceParams):
|
138
|
+
"""Temporal-compatible wrapper for InputGuardrail with function
|
139
|
+
serialization."""
|
140
|
+
name: str
|
141
|
+
_guardrail_function: Callable = PrivateAttr()
|
142
|
+
guardrail_function_serialized: str = Field(
|
143
|
+
default="",
|
144
|
+
description=(
|
145
|
+
"Serialized guardrail function. Set automatically during initialization. "
|
146
|
+
"Pass `guardrail_function` to the constructor instead."
|
147
|
+
),
|
148
|
+
)
|
149
|
+
|
150
|
+
def __init__(
|
151
|
+
self,
|
152
|
+
*,
|
153
|
+
guardrail_function: Optional[Callable] = None,
|
154
|
+
**data,
|
155
|
+
):
|
156
|
+
"""Initialize with function serialization support for Temporal."""
|
157
|
+
super().__init__(**data)
|
158
|
+
if not guardrail_function:
|
159
|
+
if not self.guardrail_function_serialized:
|
160
|
+
raise ValueError(
|
161
|
+
"One of `guardrail_function` or "
|
162
|
+
"`guardrail_function_serialized` should be set"
|
163
|
+
)
|
164
|
+
else:
|
165
|
+
guardrail_function = self._deserialize_callable(
|
166
|
+
self.guardrail_function_serialized
|
167
|
+
)
|
168
|
+
else:
|
169
|
+
self.guardrail_function_serialized = self._serialize_callable(
|
170
|
+
guardrail_function
|
171
|
+
)
|
172
|
+
|
173
|
+
self._guardrail_function = guardrail_function
|
174
|
+
|
175
|
+
@classmethod
|
176
|
+
def _deserialize_callable(cls, serialized: str) -> Callable:
|
177
|
+
encoded = serialized.encode()
|
178
|
+
serialized_bytes = base64.b64decode(encoded)
|
179
|
+
return cloudpickle.loads(serialized_bytes)
|
180
|
+
|
181
|
+
@classmethod
|
182
|
+
def _serialize_callable(cls, func: Callable) -> str:
|
183
|
+
serialized_bytes = cloudpickle.dumps(func)
|
184
|
+
encoded = base64.b64encode(serialized_bytes)
|
185
|
+
return encoded.decode()
|
186
|
+
|
187
|
+
@property
|
188
|
+
def guardrail_function(self) -> Callable:
|
189
|
+
if (self._guardrail_function is None and
|
190
|
+
self.guardrail_function_serialized):
|
191
|
+
self._guardrail_function = self._deserialize_callable(
|
192
|
+
self.guardrail_function_serialized
|
193
|
+
)
|
194
|
+
return self._guardrail_function
|
195
|
+
|
196
|
+
@guardrail_function.setter
|
197
|
+
def guardrail_function(self, value: Callable):
|
198
|
+
self.guardrail_function_serialized = self._serialize_callable(value)
|
199
|
+
self._guardrail_function = value
|
200
|
+
|
201
|
+
def to_oai_input_guardrail(self) -> InputGuardrail:
|
202
|
+
"""Convert to OpenAI InputGuardrail."""
|
203
|
+
return InputGuardrail(
|
204
|
+
guardrail_function=self.guardrail_function,
|
205
|
+
name=self.name
|
206
|
+
)
|
207
|
+
|
208
|
+
|
209
|
+
class TemporalOutputGuardrail(BaseModelWithTraceParams):
|
210
|
+
"""Temporal-compatible wrapper for OutputGuardrail with function
|
211
|
+
serialization."""
|
212
|
+
name: str
|
213
|
+
_guardrail_function: Callable = PrivateAttr()
|
214
|
+
guardrail_function_serialized: str = Field(
|
215
|
+
default="",
|
216
|
+
description=(
|
217
|
+
"Serialized guardrail function. Set automatically during initialization. "
|
218
|
+
"Pass `guardrail_function` to the constructor instead."
|
219
|
+
),
|
220
|
+
)
|
221
|
+
|
222
|
+
def __init__(
|
223
|
+
self,
|
224
|
+
*,
|
225
|
+
guardrail_function: Optional[Callable] = None,
|
226
|
+
**data,
|
227
|
+
):
|
228
|
+
"""Initialize with function serialization support for Temporal."""
|
229
|
+
super().__init__(**data)
|
230
|
+
if not guardrail_function:
|
231
|
+
if not self.guardrail_function_serialized:
|
232
|
+
raise ValueError(
|
233
|
+
"One of `guardrail_function` or "
|
234
|
+
"`guardrail_function_serialized` should be set"
|
235
|
+
)
|
236
|
+
else:
|
237
|
+
guardrail_function = self._deserialize_callable(
|
238
|
+
self.guardrail_function_serialized
|
239
|
+
)
|
240
|
+
else:
|
241
|
+
self.guardrail_function_serialized = self._serialize_callable(
|
242
|
+
guardrail_function
|
243
|
+
)
|
244
|
+
|
245
|
+
self._guardrail_function = guardrail_function
|
246
|
+
|
247
|
+
@classmethod
|
248
|
+
def _deserialize_callable(cls, serialized: str) -> Callable:
|
249
|
+
encoded = serialized.encode()
|
250
|
+
serialized_bytes = base64.b64decode(encoded)
|
251
|
+
return cloudpickle.loads(serialized_bytes)
|
252
|
+
|
253
|
+
@classmethod
|
254
|
+
def _serialize_callable(cls, func: Callable) -> str:
|
255
|
+
serialized_bytes = cloudpickle.dumps(func)
|
256
|
+
encoded = base64.b64encode(serialized_bytes)
|
257
|
+
return encoded.decode()
|
258
|
+
|
259
|
+
@property
|
260
|
+
def guardrail_function(self) -> Callable:
|
261
|
+
if (self._guardrail_function is None and
|
262
|
+
self.guardrail_function_serialized):
|
263
|
+
self._guardrail_function = self._deserialize_callable(
|
264
|
+
self.guardrail_function_serialized
|
265
|
+
)
|
266
|
+
return self._guardrail_function
|
267
|
+
|
268
|
+
@guardrail_function.setter
|
269
|
+
def guardrail_function(self, value: Callable):
|
270
|
+
self.guardrail_function_serialized = self._serialize_callable(value)
|
271
|
+
self._guardrail_function = value
|
272
|
+
|
273
|
+
def to_oai_output_guardrail(self) -> OutputGuardrail:
|
274
|
+
"""Convert to OpenAI OutputGuardrail."""
|
275
|
+
return OutputGuardrail(
|
276
|
+
guardrail_function=self.guardrail_function,
|
277
|
+
name=self.name
|
278
|
+
)
|
279
|
+
|
280
|
+
|
136
281
|
class ModelSettings(BaseModelWithTraceParams):
|
137
282
|
temperature: float | None = None
|
138
283
|
top_p: float | None = None
|
@@ -172,6 +317,8 @@ class RunAgentParams(BaseModelWithTraceParams):
|
|
172
317
|
output_type: Any = None
|
173
318
|
tool_use_behavior: Literal["run_llm_again", "stop_on_first_tool"] = "run_llm_again"
|
174
319
|
mcp_timeout_seconds: int | None = None
|
320
|
+
input_guardrails: list[TemporalInputGuardrail] | None = None
|
321
|
+
output_guardrails: list[TemporalOutputGuardrail] | None = None
|
175
322
|
|
176
323
|
|
177
324
|
class RunAgentAutoSendParams(RunAgentParams):
|
@@ -214,6 +361,15 @@ class OpenAIActivities:
|
|
214
361
|
@activity.defn(name=OpenAIActivityName.RUN_AGENT)
|
215
362
|
async def run_agent(self, params: RunAgentParams) -> SerializableRunResult:
|
216
363
|
"""Run an agent without streaming or TaskMessage creation."""
|
364
|
+
# Convert Temporal guardrails to OpenAI guardrails
|
365
|
+
input_guardrails = None
|
366
|
+
if params.input_guardrails:
|
367
|
+
input_guardrails = [g.to_oai_input_guardrail() for g in params.input_guardrails]
|
368
|
+
|
369
|
+
output_guardrails = None
|
370
|
+
if params.output_guardrails:
|
371
|
+
output_guardrails = [g.to_oai_output_guardrail() for g in params.output_guardrails]
|
372
|
+
|
217
373
|
result = await self._openai_service.run_agent(
|
218
374
|
input_list=params.input_list,
|
219
375
|
mcp_server_params=params.mcp_server_params,
|
@@ -228,6 +384,8 @@ class OpenAIActivities:
|
|
228
384
|
tools=params.tools,
|
229
385
|
output_type=params.output_type,
|
230
386
|
tool_use_behavior=params.tool_use_behavior,
|
387
|
+
input_guardrails=input_guardrails,
|
388
|
+
output_guardrails=output_guardrails,
|
231
389
|
)
|
232
390
|
return self._to_serializable_run_result(result)
|
233
391
|
|
@@ -236,46 +394,154 @@ class OpenAIActivities:
|
|
236
394
|
self, params: RunAgentAutoSendParams
|
237
395
|
) -> SerializableRunResult:
|
238
396
|
"""Run an agent with automatic TaskMessage creation."""
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
397
|
+
# Convert Temporal guardrails to OpenAI guardrails
|
398
|
+
input_guardrails = None
|
399
|
+
if params.input_guardrails:
|
400
|
+
input_guardrails = [g.to_oai_input_guardrail() for g in params.input_guardrails]
|
401
|
+
|
402
|
+
output_guardrails = None
|
403
|
+
if params.output_guardrails:
|
404
|
+
output_guardrails = [g.to_oai_output_guardrail() for g in params.output_guardrails]
|
405
|
+
|
406
|
+
try:
|
407
|
+
result = await self._openai_service.run_agent_auto_send(
|
408
|
+
task_id=params.task_id,
|
409
|
+
input_list=params.input_list,
|
410
|
+
mcp_server_params=params.mcp_server_params,
|
411
|
+
agent_name=params.agent_name,
|
412
|
+
agent_instructions=params.agent_instructions,
|
413
|
+
trace_id=params.trace_id,
|
414
|
+
parent_span_id=params.parent_span_id,
|
415
|
+
handoff_description=params.handoff_description,
|
416
|
+
handoffs=params.handoffs,
|
417
|
+
model=params.model,
|
418
|
+
model_settings=params.model_settings,
|
419
|
+
tools=params.tools,
|
420
|
+
output_type=params.output_type,
|
421
|
+
tool_use_behavior=params.tool_use_behavior,
|
422
|
+
input_guardrails=input_guardrails,
|
423
|
+
output_guardrails=output_guardrails,
|
424
|
+
)
|
425
|
+
return self._to_serializable_run_result(result)
|
426
|
+
except InputGuardrailTripwireTriggered as e:
|
427
|
+
# Handle guardrail trigger gracefully
|
428
|
+
rejection_message = "I'm sorry, but I cannot process this request due to a guardrail. Please try a different question."
|
429
|
+
|
430
|
+
# Try to extract rejection message from the guardrail result
|
431
|
+
if hasattr(e, 'guardrail_result') and hasattr(e.guardrail_result, 'output'):
|
432
|
+
output_info = getattr(e.guardrail_result.output, 'output_info', {})
|
433
|
+
if isinstance(output_info, dict) and 'rejection_message' in output_info:
|
434
|
+
rejection_message = output_info['rejection_message']
|
435
|
+
|
436
|
+
# Build the final input list with the rejection message
|
437
|
+
final_input_list = list(params.input_list or [])
|
438
|
+
final_input_list.append({
|
439
|
+
"role": "assistant",
|
440
|
+
"content": rejection_message
|
441
|
+
})
|
442
|
+
|
443
|
+
return SerializableRunResult(
|
444
|
+
final_output=rejection_message,
|
445
|
+
final_input_list=final_input_list
|
446
|
+
)
|
447
|
+
except OutputGuardrailTripwireTriggered as e:
|
448
|
+
# Handle output guardrail trigger gracefully
|
449
|
+
rejection_message = "I'm sorry, but I cannot provide this response due to a guardrail. Please try a different question."
|
450
|
+
|
451
|
+
# Try to extract rejection message from the guardrail result
|
452
|
+
if hasattr(e, 'guardrail_result') and hasattr(e.guardrail_result, 'output'):
|
453
|
+
output_info = getattr(e.guardrail_result.output, 'output_info', {})
|
454
|
+
if isinstance(output_info, dict) and 'rejection_message' in output_info:
|
455
|
+
rejection_message = output_info['rejection_message']
|
456
|
+
|
457
|
+
# Build the final input list with the rejection message
|
458
|
+
final_input_list = list(params.input_list or [])
|
459
|
+
final_input_list.append({
|
460
|
+
"role": "assistant",
|
461
|
+
"content": rejection_message
|
462
|
+
})
|
463
|
+
|
464
|
+
return SerializableRunResult(
|
465
|
+
final_output=rejection_message,
|
466
|
+
final_input_list=final_input_list
|
467
|
+
)
|
256
468
|
|
257
469
|
@activity.defn(name=OpenAIActivityName.RUN_AGENT_STREAMED_AUTO_SEND)
|
258
470
|
async def run_agent_streamed_auto_send(
|
259
471
|
self, params: RunAgentStreamedAutoSendParams
|
260
472
|
) -> SerializableRunResultStreaming:
|
261
473
|
"""Run an agent with streaming and automatic TaskMessage creation."""
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
474
|
+
# Convert Temporal guardrails to OpenAI guardrails
|
475
|
+
input_guardrails = None
|
476
|
+
if params.input_guardrails:
|
477
|
+
input_guardrails = [g.to_oai_input_guardrail() for g in params.input_guardrails]
|
478
|
+
|
479
|
+
output_guardrails = None
|
480
|
+
if params.output_guardrails:
|
481
|
+
output_guardrails = [g.to_oai_output_guardrail() for g in params.output_guardrails]
|
482
|
+
|
483
|
+
try:
|
484
|
+
result = await self._openai_service.run_agent_streamed_auto_send(
|
485
|
+
task_id=params.task_id,
|
486
|
+
input_list=params.input_list,
|
487
|
+
mcp_server_params=params.mcp_server_params,
|
488
|
+
agent_name=params.agent_name,
|
489
|
+
agent_instructions=params.agent_instructions,
|
490
|
+
trace_id=params.trace_id,
|
491
|
+
parent_span_id=params.parent_span_id,
|
492
|
+
handoff_description=params.handoff_description,
|
493
|
+
handoffs=params.handoffs,
|
494
|
+
model=params.model,
|
495
|
+
model_settings=params.model_settings,
|
496
|
+
tools=params.tools,
|
497
|
+
output_type=params.output_type,
|
498
|
+
tool_use_behavior=params.tool_use_behavior,
|
499
|
+
input_guardrails=input_guardrails,
|
500
|
+
output_guardrails=output_guardrails,
|
501
|
+
)
|
502
|
+
return self._to_serializable_run_result_streaming(result)
|
503
|
+
except InputGuardrailTripwireTriggered as e:
|
504
|
+
# Handle guardrail trigger gracefully
|
505
|
+
rejection_message = "I'm sorry, but I cannot process this request due to a guardrail. Please try a different question."
|
506
|
+
|
507
|
+
# Try to extract rejection message from the guardrail result
|
508
|
+
if hasattr(e, 'guardrail_result') and hasattr(e.guardrail_result, 'output'):
|
509
|
+
output_info = getattr(e.guardrail_result.output, 'output_info', {})
|
510
|
+
if isinstance(output_info, dict) and 'rejection_message' in output_info:
|
511
|
+
rejection_message = output_info['rejection_message']
|
512
|
+
|
513
|
+
# Build the final input list with the rejection message
|
514
|
+
final_input_list = list(params.input_list or [])
|
515
|
+
final_input_list.append({
|
516
|
+
"role": "assistant",
|
517
|
+
"content": rejection_message
|
518
|
+
})
|
519
|
+
|
520
|
+
return SerializableRunResultStreaming(
|
521
|
+
final_output=rejection_message,
|
522
|
+
final_input_list=final_input_list
|
523
|
+
)
|
524
|
+
except OutputGuardrailTripwireTriggered as e:
|
525
|
+
# Handle output guardrail trigger gracefully
|
526
|
+
rejection_message = "I'm sorry, but I cannot provide this response due to a guardrail. Please try a different question."
|
527
|
+
|
528
|
+
# Try to extract rejection message from the guardrail result
|
529
|
+
if hasattr(e, 'guardrail_result') and hasattr(e.guardrail_result, 'output'):
|
530
|
+
output_info = getattr(e.guardrail_result.output, 'output_info', {})
|
531
|
+
if isinstance(output_info, dict) and 'rejection_message' in output_info:
|
532
|
+
rejection_message = output_info['rejection_message']
|
533
|
+
|
534
|
+
# Build the final input list with the rejection message
|
535
|
+
final_input_list = list(params.input_list or [])
|
536
|
+
final_input_list.append({
|
537
|
+
"role": "assistant",
|
538
|
+
"content": rejection_message
|
539
|
+
})
|
540
|
+
|
541
|
+
return SerializableRunResultStreaming(
|
542
|
+
final_output=rejection_message,
|
543
|
+
final_input_list=final_input_list
|
544
|
+
)
|
279
545
|
|
280
546
|
@staticmethod
|
281
547
|
def _to_serializable_run_result(result: RunResult) -> SerializableRunResult:
|
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from typing import
|
5
|
+
from typing import Optional
|
6
6
|
from typing_extensions import Literal, Required, TypedDict
|
7
7
|
|
8
|
+
from .._types import SequenceNotStr
|
8
9
|
from .message_style import MessageStyle
|
9
10
|
from .message_author import MessageAuthor
|
10
11
|
|
@@ -18,10 +19,10 @@ class ReasoningContentParam(TypedDict, total=False):
|
|
18
19
|
`tool`.
|
19
20
|
"""
|
20
21
|
|
21
|
-
summary: Required[
|
22
|
+
summary: Required[SequenceNotStr[str]]
|
22
23
|
"""A list of short reasoning summaries"""
|
23
24
|
|
24
|
-
content: Optional[
|
25
|
+
content: Optional[SequenceNotStr[str]]
|
25
26
|
"""The reasoning content or chain-of-thought text"""
|
26
27
|
|
27
28
|
style: MessageStyle
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.11
|
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
|
@@ -1,28 +1,30 @@
|
|
1
1
|
agentex/__init__.py,sha256=j0BX5IfIjYaWdXQC7P4bh1Ev2-0bJe4Uh7IbqG551ng,2667
|
2
|
-
agentex/_base_client.py,sha256=
|
2
|
+
agentex/_base_client.py,sha256=Y_EaL4x9g7EsRADVD6vJ303tLO0iyB3K5SbTSvKCS2k,67048
|
3
3
|
agentex/_client.py,sha256=Fae6qw42eIjFaENpQ5nrq5SyW1310UoHZGNrG-DSa_g,20493
|
4
|
-
agentex/_compat.py,sha256=
|
4
|
+
agentex/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
|
5
5
|
agentex/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
|
6
6
|
agentex/_exceptions.py,sha256=B09aFjWFRSShb9BFJd-MNDblsGDyGk3w-vItYmjg_AI,3222
|
7
7
|
agentex/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
|
8
|
-
agentex/_models.py,sha256=
|
8
|
+
agentex/_models.py,sha256=c29x_mRccdxlGwdUPfSR5eJxGXe74Ea5Dje5igZTrKQ,30024
|
9
9
|
agentex/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
|
10
10
|
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
|
-
agentex/_types.py,sha256=
|
14
|
-
agentex/_version.py,sha256=
|
13
|
+
agentex/_types.py,sha256=lO491FSd7vM_uBp7-TvItbauEAH8SsEPYcyNO_5lKGM,7297
|
14
|
+
agentex/_version.py,sha256=UYgXD2yMmHvxJnwHfei7jWGFpHJyHk2QvkCDUFQ7L5c,160
|
15
15
|
agentex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
|
-
agentex/_utils/__init__.py,sha256=
|
16
|
+
agentex/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
|
17
|
+
agentex/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
|
18
|
+
agentex/_utils/_datetime_parse.py,sha256=bABTs0Bc6rabdFvnIwXjEhWL15TcRgWZ_6XGTqN8xUk,4204
|
17
19
|
agentex/_utils/_logs.py,sha256=LUjFPc3fweSChBUmjhQD8uYmwQAmFMNDuVFKfjYBQfM,777
|
18
20
|
agentex/_utils/_proxy.py,sha256=aglnj2yBTDyGX9Akk2crZHrl10oqRmceUy2Zp008XEs,1975
|
19
21
|
agentex/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
|
20
22
|
agentex/_utils/_resources_proxy.py,sha256=W1Rrg7LVZHLIUq40nOfgQv6orKG16CKqDRKHiaSUVYg,594
|
21
23
|
agentex/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD-noMLM,289
|
22
24
|
agentex/_utils/_sync.py,sha256=TpGLrrhRNWTJtODNE6Fup3_k7zrWm1j2RlirzBwre-0,2862
|
23
|
-
agentex/_utils/_transform.py,sha256=
|
24
|
-
agentex/_utils/_typing.py,sha256=
|
25
|
-
agentex/_utils/_utils.py,sha256=
|
25
|
+
agentex/_utils/_transform.py,sha256=i_U4R82RtQJtKKCriwFqmfcWjtwmmsiiF1AEXKQ_OPo,15957
|
26
|
+
agentex/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,4786
|
27
|
+
agentex/_utils/_utils.py,sha256=D2QE7mVPNEJzaB50u8rvDQAUDS5jx7JoeFD7zdj-TeI,12231
|
26
28
|
agentex/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
27
29
|
agentex/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
30
|
agentex/lib/environment_variables.py,sha256=6iWpCEURbahnLxZIjvJGES-zs7euUI8bxVXFN29tyYg,3242
|
@@ -41,7 +43,7 @@ agentex/lib/adk/_modules/tracing.py,sha256=A_kH332f_DFVfMftPHGEg3oi4RFcwDXohg7xt
|
|
41
43
|
agentex/lib/adk/providers/__init__.py,sha256=KPWC8AYsl8lPgpFoRXlGwzozb-peKLAzV_DcTWXBsz4,306
|
42
44
|
agentex/lib/adk/providers/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
45
|
agentex/lib/adk/providers/_modules/litellm.py,sha256=11LxGsverxarRgxoP7Ni17GOCZwSlQlxHBz7ksToEkc,9486
|
44
|
-
agentex/lib/adk/providers/_modules/openai.py,sha256=
|
46
|
+
agentex/lib/adk/providers/_modules/openai.py,sha256=1zoFkvhHJH4Z5a5ZNQSqW28fOZuv33T5P7f4phy1aOY,20619
|
45
47
|
agentex/lib/adk/providers/_modules/sgp.py,sha256=QszUPyeGBODfI5maYvlzErD87PsMsX6vrfC7n65WNjE,3224
|
46
48
|
agentex/lib/adk/utils/__init__.py,sha256=7f6ayV0_fqyw5cwzVANNcZWGJZ-vrrYtZ0qi7KKBRFs,130
|
47
49
|
agentex/lib/adk/utils/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -87,14 +89,15 @@ agentex/lib/cli/templates/sync/project/acp.py.j2,sha256=PUVXnN7IikBWYnfqLMgual-i
|
|
87
89
|
agentex/lib/cli/templates/temporal/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
88
90
|
agentex/lib/cli/templates/temporal/Dockerfile-uv.j2,sha256=g8zECsR9_byvlc8bPdbY4Lw97w9nlWb8edx5FPiJav0,1426
|
89
91
|
agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=N1Z73jb8pnxsjP9zbs-tSyNHO6usVzyOdtWorbR5gVY,1434
|
90
|
-
agentex/lib/cli/templates/temporal/README.md.j2,sha256=
|
92
|
+
agentex/lib/cli/templates/temporal/README.md.j2,sha256=xIR3j97RA2F2x1PjfJTJ83YhoU108vS9WO1bZmM1vj8,10855
|
91
93
|
agentex/lib/cli/templates/temporal/dev.ipynb.j2,sha256=8xY82gVfQ0mhzlEZzI4kLqIXCF19YgimLnpEirDMX8I,3395
|
92
94
|
agentex/lib/cli/templates/temporal/environments.yaml.j2,sha256=WJq3WOac9mWCTcZnMrjIU65lBzYLBU5Qeo-pl9geV1w,2089
|
93
95
|
agentex/lib/cli/templates/temporal/manifest.yaml.j2,sha256=Ic2CjQ-4tNCQhJ3phhAUj7a3xzijXegZ976glgj0-sg,4569
|
94
96
|
agentex/lib/cli/templates/temporal/pyproject.toml.j2,sha256=MoR1g6KnGOQrXWOXhFKMw561kgpxy0tdom0KLtQe8A8,548
|
95
97
|
agentex/lib/cli/templates/temporal/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
|
96
98
|
agentex/lib/cli/templates/temporal/project/acp.py.j2,sha256=Ha5oBaGT1WC93TEBfWMM7OtbmAYOF2t3PjY6uOL6mJE,2386
|
97
|
-
agentex/lib/cli/templates/temporal/project/
|
99
|
+
agentex/lib/cli/templates/temporal/project/activities.py.j2,sha256=kRDCMs5YYY24K88WuoPBzSdLQdLILVlAbud0G5ULJvU,2304
|
100
|
+
agentex/lib/cli/templates/temporal/project/run_worker.py.j2,sha256=_JeknhHcE77GwVdJAWRTdgREJQXGTVOI2HDfh4QNZSw,1065
|
98
101
|
agentex/lib/cli/templates/temporal/project/workflow.py.j2,sha256=VPnHnzr09i5y68vCOIJ8wTrc8KVHoDp5WooQew0GiWg,3210
|
99
102
|
agentex/lib/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
100
103
|
agentex/lib/cli/utils/auth_utils.py,sha256=FaF1nDh1swxCBeBO9aOk20ewkWDg7UjQGHT7nqZEBn0,1876
|
@@ -131,7 +134,7 @@ agentex/lib/core/services/adk/acp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
|
|
131
134
|
agentex/lib/core/services/adk/acp/acp.py,sha256=s5dUYTFTIlkvD0x5g5FYVt9Z9Zt2KEHsWya30dRpO0w,7993
|
132
135
|
agentex/lib/core/services/adk/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
133
136
|
agentex/lib/core/services/adk/providers/litellm.py,sha256=EKzus_xohNW-85V5hwvd1WqUd3ebv2wc9vDIWO2t1Mw,10044
|
134
|
-
agentex/lib/core/services/adk/providers/openai.py,sha256=
|
137
|
+
agentex/lib/core/services/adk/providers/openai.py,sha256=f3yPy3mWddo8sbOHHay8PpkWbvLC8TrAbepiHY7AamI,46897
|
135
138
|
agentex/lib/core/services/adk/providers/sgp.py,sha256=9gm-sPNQ_OSTaBzL0onerKhokPk_ZHndaKNO-z16wyQ,3676
|
136
139
|
agentex/lib/core/services/adk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
137
140
|
agentex/lib/core/services/adk/utils/templating.py,sha256=eaXSFq31Y9p5pRD6J6SL4QdTFtxy81dilbF2XXc2JYQ,1889
|
@@ -151,7 +154,7 @@ agentex/lib/core/temporal/activities/adk/acp/__init__.py,sha256=47DEQpj8HBSa-_TI
|
|
151
154
|
agentex/lib/core/temporal/activities/adk/acp/acp_activities.py,sha256=yWgL99R3rYF2o_A38B92IsJPSdCWFN0DT6DtNEGY9YA,2693
|
152
155
|
agentex/lib/core/temporal/activities/adk/providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
153
156
|
agentex/lib/core/temporal/activities/adk/providers/litellm_activities.py,sha256=Ix92XZIQIbhf-_fOWkUZDxZ1UUCOF0kOwxbcRYBzBQA,2583
|
154
|
-
agentex/lib/core/temporal/activities/adk/providers/openai_activities.py,sha256=
|
157
|
+
agentex/lib/core/temporal/activities/adk/providers/openai_activities.py,sha256=SP6amg_B3UVanCkX4WIetO42flSGLoGe4fKcxtiACRw,22558
|
155
158
|
agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py,sha256=C8n97mEhc3yFDgdejERDob9g5STfWgGoY-BmkQBH6Lg,1266
|
156
159
|
agentex/lib/core/temporal/activities/adk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
157
160
|
agentex/lib/core/temporal/activities/adk/utils/templating_activities.py,sha256=dX6wpcTKY_qWsm3uJV-XU5fQLqwWAhnjO83k8EK0N7o,1189
|
@@ -260,7 +263,7 @@ agentex/types/message_style.py,sha256=nuoXzoDyP3KAQsQeKHaiby1EMxeY-8TJjWr8eMMpQE
|
|
260
263
|
agentex/types/message_update_params.py,sha256=_KpnJ56FNeoIcwodQmAgsweqH1YAeIgYVT2jo9ahUhY,502
|
261
264
|
agentex/types/reasoning_content.py,sha256=ieA_EmFlHHo5suNnY6_7Qq3u34h8ehZ0E-vhp32Am1o,915
|
262
265
|
agentex/types/reasoning_content_delta.py,sha256=tU-ndHhj9x8Mmn3BWwSouqViYHWzVOlZGYL_QF17wC4,386
|
263
|
-
agentex/types/reasoning_content_param.py,sha256=
|
266
|
+
agentex/types/reasoning_content_param.py,sha256=LLXLWWfU83R_nHsEC0HJsbPS3GyxSnEZzOTVQyjPekE,992
|
264
267
|
agentex/types/reasoning_summary_delta.py,sha256=J2VY9VF1tLCNTIoN0qQmvZgGX35P9Ndmv1fRbcMl6R4,386
|
265
268
|
agentex/types/span.py,sha256=OfNLddf5qjwv52ZrxLmgbXDDkBBovMeG7ovc4sRJReg,1045
|
266
269
|
agentex/types/span_create_params.py,sha256=o-M8rzB_6yoLrn3gQJ9Ecc6ZrsKp7uVyILam_wsGrgc,1392
|
@@ -300,8 +303,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
|
|
300
303
|
agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
|
301
304
|
agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
|
302
305
|
agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
|
303
|
-
agentex_sdk-0.4.
|
304
|
-
agentex_sdk-0.4.
|
305
|
-
agentex_sdk-0.4.
|
306
|
-
agentex_sdk-0.4.
|
307
|
-
agentex_sdk-0.4.
|
306
|
+
agentex_sdk-0.4.11.dist-info/METADATA,sha256=NxRs3dgfHa40J2MXrPTMppsbpAdK-FWiV1jnRhgeG0k,15095
|
307
|
+
agentex_sdk-0.4.11.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
308
|
+
agentex_sdk-0.4.11.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
|
309
|
+
agentex_sdk-0.4.11.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
310
|
+
agentex_sdk-0.4.11.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|