agentex-sdk 0.1.0a6__py3-none-any.whl → 0.2.0__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/deploy_handlers.py +20 -0
- agentex/lib/cli/handlers/run_handlers.py +7 -0
- agentex/lib/cli/templates/temporal/project/workflow.py.j2 +1 -1
- agentex/lib/cli/utils/__init__.py +0 -0
- agentex/lib/cli/utils/auth_utils.py +18 -0
- agentex/lib/environment_variables.py +4 -1
- agentex/lib/sdk/config/agent_manifest.py +2 -1
- agentex/lib/sdk/config/deployment_config.py +5 -1
- agentex/lib/sdk/fastacp/base/base_acp_server.py +14 -0
- agentex/resources/agents.py +5 -6
- agentex/types/__init__.py +1 -1
- agentex/types/agent_rpc_by_name_params.py +55 -5
- agentex/types/agent_rpc_params.py +27 -7
- agentex/types/{shared/task_message_update.py → task_message_update.py} +5 -5
- {agentex_sdk-0.1.0a6.dist-info → agentex_sdk-0.2.0.dist-info}/METADATA +5 -8
- {agentex_sdk-0.1.0a6.dist-info → agentex_sdk-0.2.0.dist-info}/RECORD +20 -20
- agentex/types/agent_rpc_params1.py +0 -21
- agentex/types/shared/__init__.py +0 -3
- {agentex_sdk-0.1.0a6.dist-info → agentex_sdk-0.2.0.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.1.0a6.dist-info → agentex_sdk-0.2.0.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.1.0a6.dist-info → agentex_sdk-0.2.0.dist-info}/licenses/LICENSE +0 -0
agentex/_version.py
CHANGED
@@ -8,8 +8,10 @@ import yaml
|
|
8
8
|
from pydantic import BaseModel, Field
|
9
9
|
from rich.console import Console
|
10
10
|
|
11
|
+
from agentex.lib.cli.utils.auth_utils import _encode_principal_context
|
11
12
|
from agentex.lib.cli.utils.exceptions import DeploymentError, HelmError
|
12
13
|
from agentex.lib.cli.utils.kubectl_utils import check_and_switch_cluster_context
|
14
|
+
from agentex.lib.environment_variables import EnvVarKeys
|
13
15
|
from agentex.lib.sdk.config.agent_config import AgentConfig
|
14
16
|
from agentex.lib.sdk.config.agent_manifest import AgentManifest
|
15
17
|
from agentex.lib.sdk.config.deployment_config import ClusterConfig
|
@@ -92,6 +94,12 @@ def load_override_config(override_file_path: str | None = None) -> ClusterConfig
|
|
92
94
|
) from e
|
93
95
|
|
94
96
|
|
97
|
+
|
98
|
+
def convert_env_vars_dict_to_list(env_vars: dict[str, str]) -> list[dict[str, str]]:
|
99
|
+
"""Convert a dictionary of environment variables to a list of dictionaries"""
|
100
|
+
return [{"name": key, "value": value} for key, value in env_vars.items()]
|
101
|
+
|
102
|
+
|
95
103
|
def merge_deployment_configs(
|
96
104
|
manifest: AgentManifest,
|
97
105
|
cluster_config: ClusterConfig | None,
|
@@ -168,6 +176,10 @@ def merge_deployment_configs(
|
|
168
176
|
if TEMPORAL_WORKER_KEY in helm_values:
|
169
177
|
helm_values[TEMPORAL_WORKER_KEY]["env"] = agent_config.env
|
170
178
|
|
179
|
+
encoded_principal = _encode_principal_context(manifest)
|
180
|
+
if encoded_principal:
|
181
|
+
helm_values["env"][EnvVarKeys.AUTH_PRINCIPAL_B64] = encoded_principal
|
182
|
+
|
171
183
|
if manifest.deployment and manifest.deployment.imagePullSecrets:
|
172
184
|
pull_secrets = [
|
173
185
|
pull_secret.to_dict()
|
@@ -213,6 +225,14 @@ def merge_deployment_configs(
|
|
213
225
|
if cluster_config.additional_overrides:
|
214
226
|
_deep_merge(helm_values, cluster_config.additional_overrides)
|
215
227
|
|
228
|
+
# Convert the env vars to a list of dictionaries
|
229
|
+
if "env" in helm_values:
|
230
|
+
helm_values["env"] = convert_env_vars_dict_to_list(helm_values["env"])
|
231
|
+
if TEMPORAL_WORKER_KEY in helm_values and "env" in helm_values[TEMPORAL_WORKER_KEY]:
|
232
|
+
helm_values[TEMPORAL_WORKER_KEY]["env"] = convert_env_vars_dict_to_list(
|
233
|
+
helm_values[TEMPORAL_WORKER_KEY]["env"]
|
234
|
+
)
|
235
|
+
print("Deploying with the following helm values: ", helm_values)
|
216
236
|
return helm_values
|
217
237
|
|
218
238
|
|
@@ -6,10 +6,12 @@ from pathlib import Path
|
|
6
6
|
from rich.console import Console
|
7
7
|
from rich.panel import Panel
|
8
8
|
|
9
|
+
from agentex.lib.cli.utils.auth_utils import _encode_principal_context
|
9
10
|
from agentex.lib.cli.handlers.cleanup_handlers import (
|
10
11
|
cleanup_agent_workflows,
|
11
12
|
should_cleanup_on_restart
|
12
13
|
)
|
14
|
+
from agentex.lib.environment_variables import EnvVarKeys
|
13
15
|
from agentex.lib.sdk.config.agent_manifest import AgentManifest
|
14
16
|
from agentex.lib.utils.logging import make_logger
|
15
17
|
|
@@ -427,6 +429,11 @@ def create_agent_environment(manifest: AgentManifest) -> dict[str, str]:
|
|
427
429
|
"ACP_PORT": str(manifest.local_development.agent.port),
|
428
430
|
}
|
429
431
|
|
432
|
+
# Add authorization principal if set
|
433
|
+
encoded_principal = _encode_principal_context(manifest)
|
434
|
+
if encoded_principal:
|
435
|
+
env_vars[EnvVarKeys.AUTH_PRINCIPAL_B64] = encoded_principal
|
436
|
+
|
430
437
|
# Add description if available
|
431
438
|
if manifest.agent.description:
|
432
439
|
env_vars["AGENT_DESCRIPTION"] = manifest.agent.description
|
@@ -7,7 +7,7 @@ from agentex.lib.types.acp import CreateTaskParams, SendEventParams
|
|
7
7
|
from agentex.lib.core.temporal.workflows.workflow import BaseWorkflow
|
8
8
|
from agentex.lib.core.temporal.types.workflow import SignalName
|
9
9
|
from agentex.lib.utils.logging import make_logger
|
10
|
-
from agentex.types.
|
10
|
+
from agentex.types.text_content import TextContent
|
11
11
|
from agentex.lib.environment_variables import EnvironmentVariables
|
12
12
|
|
13
13
|
environment_variables = EnvironmentVariables.refresh()
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import base64
|
2
|
+
import json
|
3
|
+
|
4
|
+
from agentex.lib.sdk.config.agent_manifest import AgentManifest
|
5
|
+
|
6
|
+
|
7
|
+
# Base 64 encode principal dictionary
|
8
|
+
def _encode_principal_context(manifest: AgentManifest):
|
9
|
+
if manifest.auth is None:
|
10
|
+
return None
|
11
|
+
|
12
|
+
principal = manifest.auth.principal
|
13
|
+
if principal is None:
|
14
|
+
return None
|
15
|
+
|
16
|
+
json_str = json.dumps(principal, separators=(',', ':'))
|
17
|
+
encoded_bytes = base64.b64encode(json_str.encode('utf-8'))
|
18
|
+
return encoded_bytes.decode('utf-8')
|
@@ -24,9 +24,11 @@ class EnvVarKeys(str, Enum):
|
|
24
24
|
ACP_URL = "ACP_URL"
|
25
25
|
ACP_PORT = "ACP_PORT"
|
26
26
|
ACP_TYPE = "ACP_TYPE"
|
27
|
-
# Workflow
|
27
|
+
# Workflow Configuration
|
28
28
|
WORKFLOW_NAME = "WORKFLOW_NAME"
|
29
29
|
WORKFLOW_TASK_QUEUE = "WORKFLOW_TASK_QUEUE"
|
30
|
+
# Auth Configuration
|
31
|
+
AUTH_PRINCIPAL_B64 = "AUTH_PRINCIPAL_B64"
|
30
32
|
|
31
33
|
|
32
34
|
class Environment(str, Enum):
|
@@ -54,6 +56,7 @@ class EnvironmentVariables(BaseModel):
|
|
54
56
|
# Workflow Configuration
|
55
57
|
WORKFLOW_TASK_QUEUE: str | None = None
|
56
58
|
WORKFLOW_NAME: str | None = None
|
59
|
+
AUTH_PRINCIPAL_B64: str | None = None
|
57
60
|
|
58
61
|
@classmethod
|
59
62
|
def refresh(cls) -> EnvironmentVariables | None:
|
@@ -15,7 +15,7 @@ from pydantic import Field
|
|
15
15
|
|
16
16
|
from agentex.lib.sdk.config.agent_config import AgentConfig
|
17
17
|
from agentex.lib.sdk.config.build_config import BuildConfig
|
18
|
-
from agentex.lib.sdk.config.deployment_config import DeploymentConfig
|
18
|
+
from agentex.lib.sdk.config.deployment_config import DeploymentConfig, AuthenticationConfig
|
19
19
|
from agentex.lib.sdk.config.local_development_config import LocalDevelopmentConfig
|
20
20
|
from agentex.lib.utils.logging import make_logger
|
21
21
|
from agentex.lib.utils.model_utils import BaseModel
|
@@ -36,6 +36,7 @@ class AgentManifest(BaseModel):
|
|
36
36
|
deployment: DeploymentConfig | None = Field(
|
37
37
|
default=None, description="Deployment configuration for the agent"
|
38
38
|
)
|
39
|
+
auth: AuthenticationConfig | None = Field(default=None, description="Authentication configuration")
|
39
40
|
|
40
41
|
def context_manager(self, build_context_root: Path) -> BuildContextManager:
|
41
42
|
"""
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Any
|
1
|
+
from typing import Any, Dict
|
2
2
|
|
3
3
|
from pydantic import Field
|
4
4
|
|
@@ -90,6 +90,10 @@ class ClusterConfig(BaseModel):
|
|
90
90
|
)
|
91
91
|
|
92
92
|
|
93
|
+
class AuthenticationConfig(BaseModel):
|
94
|
+
principal: Dict[str, Any] = Field(description="Principal used for authorization on registration")
|
95
|
+
|
96
|
+
|
93
97
|
class InjectedImagePullSecretValues(BaseModel):
|
94
98
|
"""Values for image pull secrets"""
|
95
99
|
|
@@ -1,5 +1,7 @@
|
|
1
1
|
import asyncio
|
2
|
+
import base64
|
2
3
|
import inspect
|
4
|
+
import json
|
3
5
|
from collections.abc import AsyncGenerator, Awaitable, Callable
|
4
6
|
from contextlib import asynccontextmanager
|
5
7
|
from typing import Any
|
@@ -341,6 +343,16 @@ class BaseACPServer(FastAPI):
|
|
341
343
|
"""Start the Uvicorn server for async handlers."""
|
342
344
|
uvicorn.run(self, host=host, port=port, **kwargs)
|
343
345
|
|
346
|
+
def _get_auth_principal(self, env_vars: EnvironmentVariables):
|
347
|
+
if not env_vars.AUTH_PRINCIPAL_B64:
|
348
|
+
return None
|
349
|
+
|
350
|
+
try:
|
351
|
+
decoded_str = base64.b64decode(env_vars.AUTH_PRINCIPAL_B64).decode('utf-8')
|
352
|
+
return json.loads(decoded_str)
|
353
|
+
except Exception:
|
354
|
+
return None
|
355
|
+
|
344
356
|
async def _register_agent(self, env_vars: EnvironmentVariables):
|
345
357
|
"""Register this agent with the Agentex server"""
|
346
358
|
# Build the agent's own URL
|
@@ -350,12 +362,14 @@ class BaseACPServer(FastAPI):
|
|
350
362
|
env_vars.AGENT_DESCRIPTION
|
351
363
|
or f"Generic description for agent: {env_vars.AGENT_NAME}"
|
352
364
|
)
|
365
|
+
|
353
366
|
# Prepare registration data
|
354
367
|
registration_data = {
|
355
368
|
"name": env_vars.AGENT_NAME,
|
356
369
|
"description": description,
|
357
370
|
"acp_url": full_acp_url,
|
358
371
|
"acp_type": env_vars.ACP_TYPE,
|
372
|
+
"principal_context": self._get_auth_principal(env_vars)
|
359
373
|
}
|
360
374
|
|
361
375
|
if env_vars.AGENT_ID:
|
agentex/resources/agents.py
CHANGED
@@ -7,7 +7,7 @@ from typing_extensions import Literal
|
|
7
7
|
|
8
8
|
import httpx
|
9
9
|
|
10
|
-
from ..types import
|
10
|
+
from ..types import agent_rpc_params, agent_list_params, agent_rpc_by_name_params
|
11
11
|
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
|
12
12
|
from .._utils import maybe_transform, async_maybe_transform
|
13
13
|
from .._compat import cached_property
|
@@ -20,7 +20,6 @@ from .._response import (
|
|
20
20
|
)
|
21
21
|
from ..types.agent import Agent
|
22
22
|
from .._base_client import make_request_options
|
23
|
-
from ..types.agent_rpc_params import AgentRpcParams
|
24
23
|
from ..types.agent_rpc_response import AgentRpcResponse
|
25
24
|
from ..types.agent_list_response import AgentListResponse
|
26
25
|
|
@@ -221,7 +220,7 @@ class AgentsResource(SyncAPIResource):
|
|
221
220
|
agent_id: str,
|
222
221
|
*,
|
223
222
|
method: Literal["event/send", "task/create", "message/send", "task/cancel"],
|
224
|
-
params:
|
223
|
+
params: agent_rpc_params.Params,
|
225
224
|
id: Union[int, str, None] | NotGiven = NOT_GIVEN,
|
226
225
|
jsonrpc: Literal["2.0"] | NotGiven = NOT_GIVEN,
|
227
226
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -269,7 +268,7 @@ class AgentsResource(SyncAPIResource):
|
|
269
268
|
agent_name: str,
|
270
269
|
*,
|
271
270
|
method: Literal["event/send", "task/create", "message/send", "task/cancel"],
|
272
|
-
params:
|
271
|
+
params: agent_rpc_by_name_params.Params,
|
273
272
|
id: Union[int, str, None] | NotGiven = NOT_GIVEN,
|
274
273
|
jsonrpc: Literal["2.0"] | NotGiven = NOT_GIVEN,
|
275
274
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -507,7 +506,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
507
506
|
agent_id: str,
|
508
507
|
*,
|
509
508
|
method: Literal["event/send", "task/create", "message/send", "task/cancel"],
|
510
|
-
params:
|
509
|
+
params: agent_rpc_params.Params,
|
511
510
|
id: Union[int, str, None] | NotGiven = NOT_GIVEN,
|
512
511
|
jsonrpc: Literal["2.0"] | NotGiven = NOT_GIVEN,
|
513
512
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -555,7 +554,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
555
554
|
agent_name: str,
|
556
555
|
*,
|
557
556
|
method: Literal["event/send", "task/create", "message/send", "task/cancel"],
|
558
|
-
params:
|
557
|
+
params: agent_rpc_by_name_params.Params,
|
559
558
|
id: Union[int, str, None] | NotGiven = NOT_GIVEN,
|
560
559
|
jsonrpc: Literal["2.0"] | NotGiven = NOT_GIVEN,
|
561
560
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
agentex/types/__init__.py
CHANGED
@@ -7,7 +7,6 @@ from .task import Task as Task
|
|
7
7
|
from .agent import Agent as Agent
|
8
8
|
from .event import Event as Event
|
9
9
|
from .state import State as State
|
10
|
-
from .shared import TaskMessageUpdate as TaskMessageUpdate
|
11
10
|
from .acp_type import AcpType as AcpType
|
12
11
|
from .data_delta import DataDelta as DataDelta
|
13
12
|
from .text_delta import TextDelta as TextDelta
|
@@ -38,6 +37,7 @@ from .message_list_params import MessageListParams as MessageListParams
|
|
38
37
|
from .state_create_params import StateCreateParams as StateCreateParams
|
39
38
|
from .state_list_response import StateListResponse as StateListResponse
|
40
39
|
from .state_update_params import StateUpdateParams as StateUpdateParams
|
40
|
+
from .task_message_update import TaskMessageUpdate as TaskMessageUpdate
|
41
41
|
from .tool_response_delta import ToolResponseDelta as ToolResponseDelta
|
42
42
|
from .tracker_list_params import TrackerListParams as TrackerListParams
|
43
43
|
from .task_delete_response import TaskDeleteResponse as TaskDeleteResponse
|
@@ -2,20 +2,70 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from typing import Union
|
6
|
-
from typing_extensions import Literal, Required, TypedDict
|
5
|
+
from typing import Dict, Union, Optional
|
6
|
+
from typing_extensions import Literal, Required, TypeAlias, TypedDict
|
7
7
|
|
8
|
-
from .
|
8
|
+
from .task_message_content_param import TaskMessageContentParam
|
9
9
|
|
10
|
-
__all__ = [
|
10
|
+
__all__ = [
|
11
|
+
"AgentRpcByNameParams",
|
12
|
+
"Params",
|
13
|
+
"ParamsCreateTaskRequest",
|
14
|
+
"ParamsCancelTaskRequest",
|
15
|
+
"ParamsSendMessageRequest",
|
16
|
+
"ParamsSendEventRequest",
|
17
|
+
]
|
11
18
|
|
12
19
|
|
13
20
|
class AgentRpcByNameParams(TypedDict, total=False):
|
14
21
|
method: Required[Literal["event/send", "task/create", "message/send", "task/cancel"]]
|
15
22
|
|
16
|
-
params: Required[
|
23
|
+
params: Required[Params]
|
17
24
|
"""The parameters for the agent RPC request"""
|
18
25
|
|
19
26
|
id: Union[int, str, None]
|
20
27
|
|
21
28
|
jsonrpc: Literal["2.0"]
|
29
|
+
|
30
|
+
|
31
|
+
class ParamsCreateTaskRequest(TypedDict, total=False):
|
32
|
+
name: Optional[str]
|
33
|
+
"""The name of the task to create"""
|
34
|
+
|
35
|
+
params: Optional[Dict[str, object]]
|
36
|
+
"""The parameters for the task"""
|
37
|
+
|
38
|
+
|
39
|
+
class ParamsCancelTaskRequest(TypedDict, total=False):
|
40
|
+
task_id: Optional[str]
|
41
|
+
"""The ID of the task to cancel. Either this or task_name must be provided."""
|
42
|
+
|
43
|
+
task_name: Optional[str]
|
44
|
+
"""The name of the task to cancel. Either this or task_id must be provided."""
|
45
|
+
|
46
|
+
|
47
|
+
class ParamsSendMessageRequest(TypedDict, total=False):
|
48
|
+
content: Required[TaskMessageContentParam]
|
49
|
+
"""The message that was sent to the agent"""
|
50
|
+
|
51
|
+
stream: bool
|
52
|
+
"""Whether to stream the response message back to the client"""
|
53
|
+
|
54
|
+
task_id: Optional[str]
|
55
|
+
"""The ID of the task that the message was sent to"""
|
56
|
+
|
57
|
+
|
58
|
+
class ParamsSendEventRequest(TypedDict, total=False):
|
59
|
+
content: Optional[TaskMessageContentParam]
|
60
|
+
"""The content to send to the event"""
|
61
|
+
|
62
|
+
task_id: Optional[str]
|
63
|
+
"""The ID of the task that the event was sent to"""
|
64
|
+
|
65
|
+
task_name: Optional[str]
|
66
|
+
"""The name of the task that the event was sent to"""
|
67
|
+
|
68
|
+
|
69
|
+
Params: TypeAlias = Union[
|
70
|
+
ParamsCreateTaskRequest, ParamsCancelTaskRequest, ParamsSendMessageRequest, ParamsSendEventRequest
|
71
|
+
]
|
@@ -3,14 +3,32 @@
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
5
|
from typing import Dict, Union, Optional
|
6
|
-
from typing_extensions import Required, TypeAlias, TypedDict
|
6
|
+
from typing_extensions import Literal, Required, TypeAlias, TypedDict
|
7
7
|
|
8
8
|
from .task_message_content_param import TaskMessageContentParam
|
9
9
|
|
10
|
-
__all__ = [
|
10
|
+
__all__ = [
|
11
|
+
"AgentRpcParams",
|
12
|
+
"Params",
|
13
|
+
"ParamsCreateTaskRequest",
|
14
|
+
"ParamsCancelTaskRequest",
|
15
|
+
"ParamsSendMessageRequest",
|
16
|
+
"ParamsSendEventRequest",
|
17
|
+
]
|
11
18
|
|
12
19
|
|
13
|
-
class
|
20
|
+
class AgentRpcParams(TypedDict, total=False):
|
21
|
+
method: Required[Literal["event/send", "task/create", "message/send", "task/cancel"]]
|
22
|
+
|
23
|
+
params: Required[Params]
|
24
|
+
"""The parameters for the agent RPC request"""
|
25
|
+
|
26
|
+
id: Union[int, str, None]
|
27
|
+
|
28
|
+
jsonrpc: Literal["2.0"]
|
29
|
+
|
30
|
+
|
31
|
+
class ParamsCreateTaskRequest(TypedDict, total=False):
|
14
32
|
name: Optional[str]
|
15
33
|
"""The name of the task to create"""
|
16
34
|
|
@@ -18,7 +36,7 @@ class CreateTaskRequest(TypedDict, total=False):
|
|
18
36
|
"""The parameters for the task"""
|
19
37
|
|
20
38
|
|
21
|
-
class
|
39
|
+
class ParamsCancelTaskRequest(TypedDict, total=False):
|
22
40
|
task_id: Optional[str]
|
23
41
|
"""The ID of the task to cancel. Either this or task_name must be provided."""
|
24
42
|
|
@@ -26,7 +44,7 @@ class CancelTaskRequest(TypedDict, total=False):
|
|
26
44
|
"""The name of the task to cancel. Either this or task_id must be provided."""
|
27
45
|
|
28
46
|
|
29
|
-
class
|
47
|
+
class ParamsSendMessageRequest(TypedDict, total=False):
|
30
48
|
content: Required[TaskMessageContentParam]
|
31
49
|
"""The message that was sent to the agent"""
|
32
50
|
|
@@ -37,7 +55,7 @@ class SendMessageRequest(TypedDict, total=False):
|
|
37
55
|
"""The ID of the task that the message was sent to"""
|
38
56
|
|
39
57
|
|
40
|
-
class
|
58
|
+
class ParamsSendEventRequest(TypedDict, total=False):
|
41
59
|
content: Optional[TaskMessageContentParam]
|
42
60
|
"""The content to send to the event"""
|
43
61
|
|
@@ -48,4 +66,6 @@ class SendEventRequest(TypedDict, total=False):
|
|
48
66
|
"""The name of the task that the event was sent to"""
|
49
67
|
|
50
68
|
|
51
|
-
|
69
|
+
Params: TypeAlias = Union[
|
70
|
+
ParamsCreateTaskRequest, ParamsCancelTaskRequest, ParamsSendMessageRequest, ParamsSendEventRequest
|
71
|
+
]
|
@@ -3,11 +3,11 @@
|
|
3
3
|
from typing import Union, Optional
|
4
4
|
from typing_extensions import Literal, Annotated, TypeAlias
|
5
5
|
|
6
|
-
from
|
7
|
-
from
|
8
|
-
from
|
9
|
-
from
|
10
|
-
from
|
6
|
+
from .._utils import PropertyInfo
|
7
|
+
from .._models import BaseModel
|
8
|
+
from .task_message import TaskMessage
|
9
|
+
from .task_message_delta import TaskMessageDelta
|
10
|
+
from .task_message_content import TaskMessageContent
|
11
11
|
|
12
12
|
__all__ = [
|
13
13
|
"TaskMessageUpdate",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.2.0
|
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
|
@@ -75,13 +75,10 @@ The full API of this library can be found in [api.md](https://github.com/scaleap
|
|
75
75
|
## Installation
|
76
76
|
|
77
77
|
```sh
|
78
|
-
# install from
|
79
|
-
pip install
|
78
|
+
# install from PyPI
|
79
|
+
pip install agentex-sdk
|
80
80
|
```
|
81
81
|
|
82
|
-
> [!NOTE]
|
83
|
-
> Once this package is [published to PyPI](https://www.stainless.com/docs/guides/publish), this will become: `pip install --pre agentex-sdk`
|
84
|
-
|
85
82
|
## Usage
|
86
83
|
|
87
84
|
The full API of this library can be found in [api.md](https://github.com/scaleapi/agentex-python/tree/main/api.md).
|
@@ -136,8 +133,8 @@ By default, the async client uses `httpx` for HTTP requests. However, for improv
|
|
136
133
|
You can enable this by installing `aiohttp`:
|
137
134
|
|
138
135
|
```sh
|
139
|
-
# install from
|
140
|
-
pip install
|
136
|
+
# install from PyPI
|
137
|
+
pip install agentex-sdk[aiohttp]
|
141
138
|
```
|
142
139
|
|
143
140
|
Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
|
@@ -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=KyKYySGIfHPod2hho1fPxssk5NuVn8C4MeMTtA-lg80,6198
|
14
|
-
agentex/_version.py,sha256=
|
14
|
+
agentex/_version.py,sha256=LpP1V-Vdeumn19eShvMtrDa4wumI_wB6vLrxlLvH4Sg,159
|
15
15
|
agentex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
agentex/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
17
17
|
agentex/_utils/_logs.py,sha256=LUjFPc3fweSChBUmjhQD8uYmwQAmFMNDuVFKfjYBQfM,777
|
@@ -25,7 +25,7 @@ agentex/_utils/_typing.py,sha256=D0DbbNu8GnYQTSICnTSHDGsYXj8TcAKyhejb0XcnjtY,460
|
|
25
25
|
agentex/_utils/_utils.py,sha256=ts4CiiuNpFiGB6YMdkQRh2SZvYvsl7mAF-JWHCcLDf4,12312
|
26
26
|
agentex/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
27
27
|
agentex/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
agentex/lib/environment_variables.py,sha256=
|
28
|
+
agentex/lib/environment_variables.py,sha256=FbJ-tm_thJs5Fv1q4-oY4CED4DNlwCeu3v4xYaRoMsc,3006
|
29
29
|
agentex/lib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
30
|
agentex/lib/adk/__init__.py,sha256=-PpVfEvYr_HD7TnxUWU8RCW2OnxfwpPxTW97dKTnqvI,1082
|
31
31
|
agentex/lib/adk/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -57,8 +57,8 @@ agentex/lib/cli/commands/uv.py,sha256=n6nk2F2gPUXrvWOljSN06Y5bOEnhaZH4rulproAJkt
|
|
57
57
|
agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
58
|
agentex/lib/cli/handlers/agent_handlers.py,sha256=tO-SezObLOHyXnuLVZcdOhs7klsShwG4YKUIw6Q-KW0,5463
|
59
59
|
agentex/lib/cli/handlers/cleanup_handlers.py,sha256=xFQvaPzrP0sftd1NRMA2Qi3FcNwfiJe1zAH6ZqtQ5qw,7434
|
60
|
-
agentex/lib/cli/handlers/deploy_handlers.py,sha256=
|
61
|
-
agentex/lib/cli/handlers/run_handlers.py,sha256=
|
60
|
+
agentex/lib/cli/handlers/deploy_handlers.py,sha256=a1QDRsd5uDGzPTxWx8dufGRZbmzx_OfrC9eJgYcI_RE,13566
|
61
|
+
agentex/lib/cli/handlers/run_handlers.py,sha256=0KgWjaHTkmE1IX9Aj7vT4-aKBPFRsVuOhMTgcp7xJ7o,16863
|
62
62
|
agentex/lib/cli/handlers/secret_handlers.py,sha256=VfAdAQovW9tG36Xgk_gGIGwTyFMxR3P6xc7fmAviNA8,24719
|
63
63
|
agentex/lib/cli/templates/default/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
64
64
|
agentex/lib/cli/templates/default/Dockerfile-uv.j2,sha256=tGJo_C4vwHYikV4QhGFtSiG6K7Nt4UDdJ71Gob_uTho,1109
|
@@ -90,7 +90,9 @@ agentex/lib/cli/templates/temporal/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctF
|
|
90
90
|
agentex/lib/cli/templates/temporal/deploy/example.yaml.j2,sha256=sHIEuhtruyCfGPgeLQ1ilCCnRH0HpsqhDdQT44UWUaU,1554
|
91
91
|
agentex/lib/cli/templates/temporal/project/acp.py.j2,sha256=EXeLdpWmEFCHANNsRtOvT92jV_90IqiSp8lzh7YXyCI,1231
|
92
92
|
agentex/lib/cli/templates/temporal/project/run_worker.py.j2,sha256=JA9MLcylkm7zvMiYZRX8-YhS6hrakvIbVq92Fhfh3bI,862
|
93
|
-
agentex/lib/cli/templates/temporal/project/workflow.py.j2,sha256=
|
93
|
+
agentex/lib/cli/templates/temporal/project/workflow.py.j2,sha256=VPnHnzr09i5y68vCOIJ8wTrc8KVHoDp5WooQew0GiWg,3210
|
94
|
+
agentex/lib/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
95
|
+
agentex/lib/cli/utils/auth_utils.py,sha256=Y8pCqvQxhYtyQOzbpFZ_PUIp6vo8XGDOPdyoRI1_KG8,489
|
94
96
|
agentex/lib/cli/utils/cli_utils.py,sha256=vOVL7RBbzyiMtezNPEjPTeYMSVsarv5nx5SOxigCoVs,410
|
95
97
|
agentex/lib/cli/utils/credential_utils.py,sha256=EzI_Wdvr2lt9uf9sNML1RTkzqIv6LjpB_dYlCenSNTA,3448
|
96
98
|
agentex/lib/cli/utils/exceptions.py,sha256=ZhQZzciroj4zeYlL0TWmoQ6oeLBcAowGhCGMP7Ac_lA,161
|
@@ -164,14 +166,14 @@ agentex/lib/core/tracing/processors/tracing_processor_interface.py,sha256=wxnBA_
|
|
164
166
|
agentex/lib/sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
165
167
|
agentex/lib/sdk/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
168
|
agentex/lib/sdk/config/agent_config.py,sha256=WhLMd15po3loE67LNPjCGSG5xhvv4KH6xVn6Ejy2no0,2464
|
167
|
-
agentex/lib/sdk/config/agent_manifest.py,sha256=
|
169
|
+
agentex/lib/sdk/config/agent_manifest.py,sha256=_loOWuysXb3_VtabRYyqxke7ICXOR6t6TVLFGU0Hcq0,7964
|
168
170
|
agentex/lib/sdk/config/build_config.py,sha256=KI7SfVxGrv0rxJCIBuMT5M4oJ2o9n46LRH0t6fIki3g,1049
|
169
|
-
agentex/lib/sdk/config/deployment_config.py,sha256
|
171
|
+
agentex/lib/sdk/config/deployment_config.py,sha256=lbOx2g0Q2gbo9CqWFejzmiYqh3GLndpB7_gX6R92t0g,3992
|
170
172
|
agentex/lib/sdk/config/local_development_config.py,sha256=b1AZsOVo1RoHKbk8Nm5nC8jcjJSOxKkKBv9gLhFLX8s,1697
|
171
173
|
agentex/lib/sdk/config/project_config.py,sha256=CGH_r9KbnSFMj2CnBkZnfg41L2o0TeVNz6MwBDKPT_U,3642
|
172
174
|
agentex/lib/sdk/fastacp/__init__.py,sha256=UvAdexdnfb4z0F4a2sfXROFyh9EjH89kf3AxHPybzCM,75
|
173
175
|
agentex/lib/sdk/fastacp/fastacp.py,sha256=K4D7a9EiJfCgWp2hrE_TbpZBaF4Uc46MfndZK3F9mA0,3061
|
174
|
-
agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=
|
176
|
+
agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=gsbBb8-zNu991vTh6_f5KjR_NC8Knoyy1YTsPAPN2KQ,17066
|
175
177
|
agentex/lib/sdk/fastacp/impl/agentic_base_acp.py,sha256=fWLX9_mxmX502EBXoymUz1Tu1vEppshS48-aOSpuvlM,2600
|
176
178
|
agentex/lib/sdk/fastacp/impl/sync_acp.py,sha256=8FEDfBxI31NoVLX9nyckQ8QwA0UV4svC3fhGKgXBIwk,3862
|
177
179
|
agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=ZLqjzBBVrXJCXD2bFlrcDkFvpsXZp3thC2rTwZ6xNaY,3737
|
@@ -213,7 +215,7 @@ agentex/lib/utils/parsing.py,sha256=2T-B4nJSupo2RLf9AkpV6VQHqDnF97ZBgO6zvGCauCo,
|
|
213
215
|
agentex/lib/utils/regex.py,sha256=Y3VcehCznAqa59D4WTwK_ki722oudHBlFqBk0I930zo,212
|
214
216
|
agentex/lib/utils/temporal.py,sha256=sXo8OPMMXiyrF7OSBCJBuN_ufyQOD2bLOXgDbVZoyds,292
|
215
217
|
agentex/resources/__init__.py,sha256=74rMqWBzQ2dSrKQqsrd7-jskPws0O_ogkFltvZO3HoU,3265
|
216
|
-
agentex/resources/agents.py,sha256=
|
218
|
+
agentex/resources/agents.py,sha256=fLXbcSKVB3nvPyhvOMil140Tg3Iqfk3MCQnHKswsEOo,26621
|
217
219
|
agentex/resources/events.py,sha256=Zc9JhUm3bq2VFnBAolC0M7KZernzj1AjZ_vj0ibP4GY,10412
|
218
220
|
agentex/resources/spans.py,sha256=wmcUs4XbXIF5rPeyU_f39c2RTbTLnkuh2LYogZEBD6s,20936
|
219
221
|
agentex/resources/states.py,sha256=O31A8--n7n0rHsng2e1oCUAzLNjQIxDUk7rq0IXfgGM,19262
|
@@ -222,14 +224,13 @@ agentex/resources/tracker.py,sha256=YxSeiloMwIqrS9nY7SlHclauRA7142qrKw34xgwqYbA,
|
|
222
224
|
agentex/resources/messages/__init__.py,sha256=_J1eusFtr_k6zrAntJSuqx6LWEUBSTrV1OZZh7MaDPE,1015
|
223
225
|
agentex/resources/messages/batch.py,sha256=pegCmnjK_J0jek5ChX1pKpq5RmCucTYLbK69H6qGVS4,9629
|
224
226
|
agentex/resources/messages/messages.py,sha256=XJpBhVe_yCm52GhALpz-rFjGbZ96bA8fQ_wsfk9EH6U,17866
|
225
|
-
agentex/types/__init__.py,sha256=
|
227
|
+
agentex/types/__init__.py,sha256=55T7MC3XtmCNrOo0X8c1GGi68ApsBjl3Hg0OKbOxf2A,3568
|
226
228
|
agentex/types/acp_type.py,sha256=Fj-4SzmM6m95ck_ZXtNbcWggHiD9F49bxBLPbl1fxe4,208
|
227
229
|
agentex/types/agent.py,sha256=WZRc8VZtc-JIeNHw5FsVTSMrxlaJ5A0ABvHv3t_zA4s,792
|
228
230
|
agentex/types/agent_list_params.py,sha256=81IWnRZ2rLfHH7GB6VkXShYjb44DO0guG1znJcV3tuI,316
|
229
231
|
agentex/types/agent_list_response.py,sha256=g0b9Cw7j2yk14veyJORpF3me8iW7g7pr2USpXGokoFI,254
|
230
|
-
agentex/types/agent_rpc_by_name_params.py,sha256=
|
231
|
-
agentex/types/agent_rpc_params.py,sha256=
|
232
|
-
agentex/types/agent_rpc_params1.py,sha256=3H3t6eUXaJLGuPnxlF3FPA5hx7r1gXLjFv78_L6jlkM,573
|
232
|
+
agentex/types/agent_rpc_by_name_params.py,sha256=G6xkjrZKPmJvhwqgc68tAnzmb4wYh9k0zlcm9CsLQR0,2024
|
233
|
+
agentex/types/agent_rpc_params.py,sha256=qkwICON3v6AIE8J2oN1483K_jmGueBYGkVg2W9EUJK0,2012
|
233
234
|
agentex/types/agent_rpc_response.py,sha256=xqdq6apfdaPTT5f8x1Q5z19UETI5AjVMzEIIvAHEZw8,517
|
234
235
|
agentex/types/agent_rpc_result.py,sha256=Sx_DKdM9vCZs7uvWo6H0L9PxU6Je0IYw04T4BwOvVYU,2265
|
235
236
|
agentex/types/agent_task_tracker.py,sha256=JK1kmQ7LIx1eWC-XaU2pJcIvdtQCmEn21dsJTxglAYA,803
|
@@ -263,6 +264,7 @@ agentex/types/task_message.py,sha256=hoLAkiQJd1Fl7EjLof-vZq6zVnDw9SKmnV6V74Po58A
|
|
263
264
|
agentex/types/task_message_content.py,sha256=57ebp-65y52KOZ7usVJShArIdXqBhFo5eOn8uy4HM_c,575
|
264
265
|
agentex/types/task_message_content_param.py,sha256=j-6AmAkS4xGVcV3jhb2jScm8-u3jUN0PTeU8AksIoRE,593
|
265
266
|
agentex/types/task_message_delta.py,sha256=nXNA0s38eBzue7PT_kU2Zp64CoVfxxMKAtLFxPPhEsg,547
|
267
|
+
agentex/types/task_message_update.py,sha256=gevnU4UW67qTzN_OGT-S3E5zbS9KQNehJZF3XhiirtU,2247
|
266
268
|
agentex/types/text_content.py,sha256=i6ksdQXIyWosXAm-O_26m_eZA-4x26dgoNdzWnhue9k,1347
|
267
269
|
agentex/types/text_content_param.py,sha256=5xtCBUJj6xKGlmpNuWVnBG3BBFQS3HyrKjq6KfpfVz0,1439
|
268
270
|
agentex/types/text_delta.py,sha256=lUTceOXVsh-O4QOzZnkpB3I9d6V1Z0co0JwPZsXnXjQ,322
|
@@ -280,10 +282,8 @@ agentex/types/messages/batch_create_params.py,sha256=trUV75ntEVnxYhd1FIWub6dHBaN
|
|
280
282
|
agentex/types/messages/batch_create_response.py,sha256=yaSLTw2MWWpHF23BGO1Xy9js38_7EIqHAuiLha8VSfc,278
|
281
283
|
agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_gApgpw0hg6NLsR3g,433
|
282
284
|
agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
|
283
|
-
|
284
|
-
|
285
|
-
agentex_sdk-0.
|
286
|
-
agentex_sdk-0.
|
287
|
-
agentex_sdk-0.
|
288
|
-
agentex_sdk-0.1.0a6.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
289
|
-
agentex_sdk-0.1.0a6.dist-info/RECORD,,
|
285
|
+
agentex_sdk-0.2.0.dist-info/METADATA,sha256=RPGDz9q5c8yeGl-jkQdAcyWeP97ff1NkNsKSQKRZQi0,14110
|
286
|
+
agentex_sdk-0.2.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
287
|
+
agentex_sdk-0.2.0.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
|
288
|
+
agentex_sdk-0.2.0.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
289
|
+
agentex_sdk-0.2.0.dist-info/RECORD,,
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
2
|
-
|
3
|
-
from __future__ import annotations
|
4
|
-
|
5
|
-
from typing import Union
|
6
|
-
from typing_extensions import Literal, Required, TypedDict
|
7
|
-
|
8
|
-
from . import agent_rpc_params
|
9
|
-
|
10
|
-
__all__ = ["AgentRpcParams"]
|
11
|
-
|
12
|
-
|
13
|
-
class AgentRpcParams(TypedDict, total=False):
|
14
|
-
method: Required[Literal["event/send", "task/create", "message/send", "task/cancel"]]
|
15
|
-
|
16
|
-
params: Required[agent_rpc_params.AgentRpcParams]
|
17
|
-
"""The parameters for the agent RPC request"""
|
18
|
-
|
19
|
-
id: Union[int, str, None]
|
20
|
-
|
21
|
-
jsonrpc: Literal["2.0"]
|
agentex/types/shared/__init__.py
DELETED
File without changes
|
File without changes
|
File without changes
|