beamlit 0.0.28rc24__py3-none-any.whl → 0.0.29__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
beamlit/deploy/deploy.py CHANGED
@@ -29,8 +29,8 @@ def set_default_values(resource: Resource, deployment: Agent | Function):
29
29
  deployment.metadata.environment = settings.environment
30
30
  if not deployment.metadata.name:
31
31
  deployment.metadata.name = resource.name
32
- if not deployment.metadata.displayName:
33
- deployment.metadata.displayName = deployment.metadata.name
32
+ if not deployment.metadata.display_name:
33
+ deployment.metadata.display_name = deployment.metadata.name
34
34
  if not deployment.spec.description:
35
35
  deployment.spec.description = get_description(None, resource)
36
36
  if not deployment.spec.runtime:
@@ -111,14 +111,14 @@ apiVersion: beamlit.com/v1alpha1
111
111
  kind: Agent
112
112
  metadata:
113
113
  name: {agent.metadata.name}
114
- displayName: {agent.metadata.displayName or agent.metadata.name}
114
+ displayName: {agent.metadata.display_name or agent.metadata.name}
115
115
  environment: {settings.environment}
116
116
  workspace: {settings.workspace}
117
117
  spec:
118
118
  enabled: true
119
119
  policies: [{", ".join(agent.spec.policies or [])}]
120
120
  functions: [{", ".join([f"{function.metadata.name}" for (_, function) in functions])}]
121
- agentChain: {format_agent_chain(agent.spec.agentChain)}
121
+ agentChain: {format_agent_chain(agent.spec.agent_chain)}
122
122
  model: {agent.spec.model}
123
123
  runtime:
124
124
  image: {agent.spec.runtime.image}
@@ -145,7 +145,7 @@ apiVersion: beamlit.com/v1alpha1
145
145
  kind: Function
146
146
  metadata:
147
147
  name: {function.metadata.name}
148
- displayName: {function.metadata.displayName or function.metadata.name}
148
+ displayName: {function.metadata.display_name or function.metadata.name}
149
149
  environment: {settings.environment}
150
150
  spec:
151
151
  enabled: true
@@ -11,26 +11,35 @@ from beamlit.authentication.authentication import AuthenticatedClient
11
11
  from beamlit.common.settings import get_settings
12
12
  from langchain_core.tools.base import BaseTool, BaseToolkit, ToolException
13
13
  from mcp import ListToolsResult
14
- from pydantic.json_schema import JsonSchemaValue
15
- from pydantic_core import core_schema as cs
16
14
 
17
15
  settings = get_settings()
18
16
 
17
+ def create_dynamic_schema(name: str, schema: dict[str, t.Any]) -> type[pydantic.BaseModel]:
18
+ field_definitions = {}
19
+ for k, v in schema["properties"].items():
20
+ field_type = str
21
+ if v["type"] == "number":
22
+ field_type = float
23
+ elif v["type"] == "integer":
24
+ field_type = int
25
+ elif v["type"] == "boolean":
26
+ field_type = bool
27
+ description = v.get("description") or ""
28
+ default_ = v.get("default")
29
+ fields = {}
30
+ if default_ is not None:
31
+ fields["default"] = default_
32
+ if description is not None:
33
+ fields["description"] = description
34
+ field_definitions[k] = (
35
+ field_type,
36
+ pydantic.Field(**fields)
37
+ )
38
+ return pydantic.create_model(
39
+ f"{name}Schema",
40
+ **field_definitions
41
+ )
19
42
 
20
- def create_schema_model(schema: dict[str, t.Any]) -> type[pydantic.BaseModel]:
21
- # Create a new model class that returns our JSON schema.
22
- # LangChain requires a BaseModel class.
23
- class Schema(pydantic.BaseModel):
24
- model_config = pydantic.ConfigDict(extra="allow")
25
-
26
- @t.override
27
- @classmethod
28
- def __get_pydantic_json_schema__(
29
- cls, core_schema: cs.CoreSchema, handler: pydantic.GetJsonSchemaHandler
30
- ) -> JsonSchemaValue:
31
- return schema
32
-
33
- return Schema
34
43
 
35
44
 
36
45
  class MCPClient:
@@ -42,7 +51,6 @@ class MCPClient:
42
51
  def list_tools(self) -> requests.Response:
43
52
  client = self.client.get_httpx_client()
44
53
  url = urllib.parse.urljoin(settings.mcp_hub_url, f"{self.server_name}/tools/list")
45
-
46
54
  response = client.request("GET", url, headers=self.headers)
47
55
  response.raise_for_status()
48
56
  return response
@@ -118,7 +126,7 @@ class MCPToolkit(BaseToolkit):
118
126
  client=self.client,
119
127
  name=tool.name,
120
128
  description=tool.description or "",
121
- args_schema=create_schema_model(tool.inputSchema),
129
+ args_schema=create_dynamic_schema(tool.name, tool.inputSchema),
122
130
  )
123
131
  # list_tools returns a PaginatedResult, but I don't see a way to pass the cursor to retrieve more tools
124
132
  for tool in self._tools.tools
@@ -1,33 +1,37 @@
1
1
  import asyncio
2
- import urllib.parse
3
2
  import warnings
4
- from typing import Any, Callable
3
+ from dataclasses import dataclass
4
+ from typing import Callable, Literal
5
5
 
6
6
  import pydantic
7
- import pydantic_core
8
7
  import typing_extensions as t
9
8
  from beamlit.api.functions import get_function
10
9
  from beamlit.authentication.authentication import AuthenticatedClient
11
- from beamlit.models.function import Function
12
- from langchain_core.tools.base import BaseTool, BaseToolkit, ToolException
13
- from pydantic.json_schema import JsonSchemaValue
14
- from pydantic_core import core_schema as cs
15
-
16
-
17
- def create_schema_model(schema: dict[str, t.Any]) -> type[pydantic.BaseModel]:
18
- # Create a new model class that returns our JSON schema.
19
- # LangChain requires a BaseModel class.
20
- class Schema(pydantic.BaseModel):
21
- model_config = pydantic.ConfigDict(extra="allow")
22
-
23
- @t.override
24
- @classmethod
25
- def __get_pydantic_json_schema__(
26
- cls, core_schema: cs.CoreSchema, handler: pydantic.GetJsonSchemaHandler
27
- ) -> JsonSchemaValue:
28
- return schema
29
-
30
- return Schema
10
+ from beamlit.common.settings import get_settings
11
+ from beamlit.models import Function, StoreFunctionParameter
12
+ from beamlit.run import RunClient
13
+ from langchain_core.tools.base import BaseTool, ToolException
14
+
15
+
16
+ def create_dynamic_schema(name: str, parameters: list[StoreFunctionParameter]) -> type[pydantic.BaseModel]:
17
+ field_definitions = {}
18
+ for param in parameters:
19
+ field_type = str
20
+ if param.type_ == "number":
21
+ field_type = float
22
+ elif param.type_ == "integer":
23
+ field_type = int
24
+ elif param.type_ == "boolean":
25
+ field_type = bool
26
+
27
+ field_definitions[param.name] = (
28
+ field_type,
29
+ pydantic.Field(description=param.description or "")
30
+ )
31
+ return pydantic.create_model(
32
+ f"{name}Schema",
33
+ **field_definitions
34
+ )
31
35
 
32
36
 
33
37
  class RemoteTool(BaseTool):
@@ -35,7 +39,9 @@ class RemoteTool(BaseTool):
35
39
  Remote tool
36
40
  """
37
41
 
38
- client: AuthenticatedClient
42
+ client: RunClient
43
+ resource_name: str
44
+ kit: bool = False
39
45
  handle_tool_error: bool | str | Callable[[ToolException], str] | None = True
40
46
 
41
47
  @t.override
@@ -48,12 +54,18 @@ class RemoteTool(BaseTool):
48
54
 
49
55
  @t.override
50
56
  async def _arun(self, *args: t.Any, **kwargs: t.Any) -> t.Any:
51
- result = self.client.call_tool(self.name, arguments=kwargs)
52
- response = result.json()
53
- content = pydantic_core.to_json(response["content"]).decode()
54
- if response["isError"]:
55
- raise ToolException(content)
56
- return content
57
+ settings = get_settings()
58
+ body = {**kwargs}
59
+ if self.kit:
60
+ body["name"] = self.name
61
+ result = self.client.run(
62
+ "function",
63
+ self.resource_name,
64
+ settings.environment,
65
+ "POST",
66
+ json=body
67
+ )
68
+ return result.text
57
69
 
58
70
  @t.override
59
71
  @property
@@ -61,7 +73,8 @@ class RemoteTool(BaseTool):
61
73
  assert self.args_schema is not None # noqa: S101
62
74
  return self.args_schema
63
75
 
64
- class RemoteToolkit(BaseToolkit):
76
+ @dataclass
77
+ class RemoteToolkit:
65
78
  """
66
79
  Remote toolkit
67
80
  """
@@ -75,29 +88,35 @@ class RemoteToolkit(BaseToolkit):
75
88
  def initialize(self) -> None:
76
89
  """Initialize the session and retrieve tools list"""
77
90
  if self._function is None:
78
- self._function = get_function(self.function, client=self.client)
91
+ self._function = get_function.sync_detailed(self.function, client=self.client).parsed
79
92
 
80
93
  @t.override
81
94
  def get_tools(self) -> list[BaseTool]:
82
- if self._tools is None:
95
+ if self._function is None:
83
96
  raise RuntimeError("Must initialize the toolkit first")
84
97
 
85
98
  if self._function.spec.kit:
86
99
  return [
87
100
  RemoteTool(
88
- client=self.client,
89
- name=func.name,
90
- description=func.description or "",
91
- args_schema=create_schema_model(func.parameters),
101
+ client=RunClient(self.client),
102
+ name=func.name,
103
+ resource_name=self._function.metadata.name,
104
+ kit=True,
105
+ description=func.description or "",
106
+ args_schema=create_dynamic_schema(func.name, func.parameters),
92
107
  )
93
108
  for func in self._function.spec.kit
94
109
  ]
95
110
 
96
111
  return [
97
112
  RemoteTool(
98
- client=self.client,
113
+ client=RunClient(self.client),
99
114
  name=self._function.metadata.name,
115
+ resource_name=self._function.metadata.name,
100
116
  description=self._function.spec.description or "",
101
- args_schema=create_schema_model(self._function.spec.parameters),
117
+ args_schema=create_dynamic_schema(
118
+ self._function.metadata.name,
119
+ self._function.spec.parameters
120
+ ),
102
121
  )
103
122
  ]
@@ -29,6 +29,9 @@ from .function_kit import FunctionKit
29
29
  from .function_metadata import FunctionMetadata
30
30
  from .function_release import FunctionRelease
31
31
  from .function_spec import FunctionSpec
32
+ from .get_trace_ids_response_200 import GetTraceIdsResponse200
33
+ from .get_trace_logs_response_200 import GetTraceLogsResponse200
34
+ from .get_trace_response_200 import GetTraceResponse200
32
35
  from .get_workspace_service_accounts_response_200_item import GetWorkspaceServiceAccountsResponse200Item
33
36
  from .increase_and_rate_metric import IncreaseAndRateMetric
34
37
  from .integration_config import IntegrationConfig
@@ -90,6 +93,7 @@ from .store_function_kit import StoreFunctionKit
90
93
  from .store_function_labels import StoreFunctionLabels
91
94
  from .store_function_parameter import StoreFunctionParameter
92
95
  from .time_fields import TimeFields
96
+ from .trace_ids_response import TraceIdsResponse
93
97
  from .update_workspace_service_account_body import UpdateWorkspaceServiceAccountBody
94
98
  from .update_workspace_service_account_response_200 import UpdateWorkspaceServiceAccountResponse200
95
99
  from .update_workspace_user_role_body import UpdateWorkspaceUserRoleBody
@@ -128,6 +132,9 @@ __all__ = (
128
132
  "FunctionMetadata",
129
133
  "FunctionRelease",
130
134
  "FunctionSpec",
135
+ "GetTraceIdsResponse200",
136
+ "GetTraceLogsResponse200",
137
+ "GetTraceResponse200",
131
138
  "GetWorkspaceServiceAccountsResponse200Item",
132
139
  "IncreaseAndRateMetric",
133
140
  "IntegrationConfig",
@@ -185,6 +192,7 @@ __all__ = (
185
192
  "StoreFunctionLabels",
186
193
  "StoreFunctionParameter",
187
194
  "TimeFields",
195
+ "TraceIdsResponse",
188
196
  "UpdateWorkspaceServiceAccountBody",
189
197
  "UpdateWorkspaceServiceAccountResponse200",
190
198
  "UpdateWorkspaceUserRoleBody",
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetTraceIdsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceIdsResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_trace_ids_response_200 = cls()
27
+
28
+ get_trace_ids_response_200.additional_properties = d
29
+ return get_trace_ids_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetTraceLogsResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceLogsResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_trace_logs_response_200 = cls()
27
+
28
+ get_trace_logs_response_200.additional_properties = d
29
+ return get_trace_logs_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,45 @@
1
+ from typing import Any, TypeVar
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ T = TypeVar("T", bound="GetTraceResponse200")
7
+
8
+
9
+ @_attrs_define
10
+ class GetTraceResponse200:
11
+ """ """
12
+
13
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
14
+
15
+ def to_dict(self) -> dict[str, Any]:
16
+ field_dict: dict[str, Any] = {}
17
+ field_dict.update(self.additional_properties)
18
+
19
+ return field_dict
20
+
21
+ @classmethod
22
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
23
+ if not src_dict:
24
+ return None
25
+ d = src_dict.copy()
26
+ get_trace_response_200 = cls()
27
+
28
+ get_trace_response_200.additional_properties = d
29
+ return get_trace_response_200
30
+
31
+ @property
32
+ def additional_keys(self) -> list[str]:
33
+ return list(self.additional_properties.keys())
34
+
35
+ def __getitem__(self, key: str) -> Any:
36
+ return self.additional_properties[key]
37
+
38
+ def __setitem__(self, key: str, value: Any) -> None:
39
+ self.additional_properties[key] = value
40
+
41
+ def __delitem__(self, key: str) -> None:
42
+ del self.additional_properties[key]
43
+
44
+ def __contains__(self, key: str) -> bool:
45
+ return key in self.additional_properties
@@ -0,0 +1,63 @@
1
+ from typing import Any, TypeVar, Union, cast
2
+
3
+ from attrs import define as _attrs_define
4
+ from attrs import field as _attrs_field
5
+
6
+ from ..types import UNSET, Unset
7
+
8
+ T = TypeVar("T", bound="TraceIdsResponse")
9
+
10
+
11
+ @_attrs_define
12
+ class TraceIdsResponse:
13
+ """Response containing trace IDs
14
+
15
+ Attributes:
16
+ trace_ids (Union[Unset, list[str]]): List of trace IDs
17
+ """
18
+
19
+ trace_ids: Union[Unset, list[str]] = UNSET
20
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
21
+
22
+ def to_dict(self) -> dict[str, Any]:
23
+ trace_ids: Union[Unset, list[str]] = UNSET
24
+ if not isinstance(self.trace_ids, Unset):
25
+ trace_ids = self.trace_ids
26
+
27
+ field_dict: dict[str, Any] = {}
28
+ field_dict.update(self.additional_properties)
29
+ field_dict.update({})
30
+ if trace_ids is not UNSET:
31
+ field_dict["trace_ids"] = trace_ids
32
+
33
+ return field_dict
34
+
35
+ @classmethod
36
+ def from_dict(cls: type[T], src_dict: dict[str, Any]) -> T:
37
+ if not src_dict:
38
+ return None
39
+ d = src_dict.copy()
40
+ trace_ids = cast(list[str], d.pop("trace_ids", UNSET))
41
+
42
+ trace_ids_response = cls(
43
+ trace_ids=trace_ids,
44
+ )
45
+
46
+ trace_ids_response.additional_properties = d
47
+ return trace_ids_response
48
+
49
+ @property
50
+ def additional_keys(self) -> list[str]:
51
+ return list(self.additional_properties.keys())
52
+
53
+ def __getitem__(self, key: str) -> Any:
54
+ return self.additional_properties[key]
55
+
56
+ def __setitem__(self, key: str, value: Any) -> None:
57
+ self.additional_properties[key] = value
58
+
59
+ def __delitem__(self, key: str) -> None:
60
+ del self.additional_properties[key]
61
+
62
+ def __contains__(self, key: str) -> bool:
63
+ return key in self.additional_properties
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beamlit
3
- Version: 0.0.28rc24
3
+ Version: 0.0.29
4
4
  Summary: Add your description here
5
5
  Author-email: cploujoux <ch.ploujoux@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -1,12 +1,13 @@
1
1
  beamlit/__init__.py,sha256=545gFC-wLLwUktWcOAjUWe_Glha40tBetRTOYSfHnbI,164
2
- beamlit/client.py,sha256=OdRbs5VVHF32HUd5RMcnkhe8YxamnAmgGlxO6pm1Xac,12431
2
+ beamlit/client.py,sha256=PnR6ybZk5dLIJPnDKAf2epHOeQC_7yL0fG4muvphHjA,12695
3
3
  beamlit/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
4
4
  beamlit/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
5
5
  beamlit/run.py,sha256=RLwMv5f_S8lw7Wq7O6DvEcOl0nGYh769qjGl_SmR9Z0,1338
6
6
  beamlit/types.py,sha256=E1hhDh_zXfsSQ0NCt9-uw90_Mr5iIlsdfnfvxv5HarU,1005
7
7
  beamlit/agents/__init__.py,sha256=nf1iwQwGtCG6nDqyVhxfWoqR6dv6X3bvSpCeqkTCFaM,101
8
+ beamlit/agents/chain.py,sha256=HzBs3nI4xaH86I_r-M-HGGp6roXsJxMx-qXl_GrJaY0,2831
8
9
  beamlit/agents/chat.py,sha256=gVyv4FGBdQTDhdutX8l64OUNa6Fdqaw4eCfEDRH0IPQ,3558
9
- beamlit/agents/decorator.py,sha256=WiE6zfRv4Ywf1wH-rUaGjBNGjIDRdgoEH_8Yl26IM6U,9263
10
+ beamlit/agents/decorator.py,sha256=4KxPcu6hPoB__1OdzpEJVD5N3QVa_syKd_Y6n6lVEjQ,9715
10
11
  beamlit/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
11
12
  beamlit/api/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
13
  beamlit/api/agents/create_agent.py,sha256=t5Pr62My2EhQlcIY71MrI73-0_q5Djr3a_Ybt9MIiQQ,3587
@@ -17,12 +18,17 @@ beamlit/api/agents/get_agent.py,sha256=IBMiNb36CyNKKyW-RvMSakmOaGrP2hSm3HRa_Gm_c
17
18
  beamlit/api/agents/get_agent_environment_logs.py,sha256=Fdd_mvlJXO17BQHbnl0YpUbXcX-1BsuZI2WKz6cgacA,3759
18
19
  beamlit/api/agents/get_agent_history.py,sha256=sDKZQhul8wrSbuRY8WNI6jRNYgFcYtCnaU2fgR1owM8,3846
19
20
  beamlit/api/agents/get_agent_metrics.py,sha256=IRdex5XAekCHSep6T7KQHB9T1J1f9egDx-MaiNynRVU,4344
21
+ beamlit/api/agents/get_agent_trace_ids.py,sha256=nCYXzCCmu8VXeLvPRX8Rc6N2JKMLVTTObbKtiCOzIg0,4365
20
22
  beamlit/api/agents/list_agent_history.py,sha256=ZMTG5PSSkfd4OLmVHDIvDZy13bElrhQivF7QtBDLK9w,3775
21
23
  beamlit/api/agents/list_agents.py,sha256=d6j_LM-8--2nfTHFjueRkoimHf02RRMAOWTpt8anJGg,4101
22
24
  beamlit/api/agents/put_agent_history.py,sha256=lt1_9yFW_vEgeS_jlh-4EumgbTZCdcZYy9GbA91gewU,4590
23
25
  beamlit/api/agents/update_agent.py,sha256=No9iJkjUFJBCHDth1_vpuDfl2Ev3us1OWHXrrRzzE4E,3937
24
26
  beamlit/api/configurations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
27
  beamlit/api/configurations/get_configuration.py,sha256=BtazLwvVe1OGjt0dJ-NVVipqAqZt1HwemWTGK2iuN9w,3197
28
+ beamlit/api/default/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
+ beamlit/api/default/get_trace.py,sha256=2x-qpeu8jpfbq_c4-aAHgliwBQfagLEWEgM77eB_ZiY,3621
30
+ beamlit/api/default/get_trace_ids.py,sha256=qxT085F7pt4GI0Ir7fpFA19IIR9_NFy47fYL9bPAtJo,6712
31
+ beamlit/api/default/get_trace_logs.py,sha256=R69_j9GFAwkujsNMp4VTxoZuzw8jFni56l0bRxACT4w,4770
26
32
  beamlit/api/environments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
33
  beamlit/api/environments/create_environment.py,sha256=ocD_8MlOivWlo9ICeSRkHuZfndLHCrROfiJvCynsADU,4321
28
34
  beamlit/api/environments/delete_environment.py,sha256=bkDsO1akkb1To4TDz1XvKiB4XI34phBOJLj72KXMW6M,3819
@@ -37,6 +43,7 @@ beamlit/api/functions/delete_function.py,sha256=dzCBAL50Yg18bDUpcC1COjwFstnfBpqt
37
43
  beamlit/api/functions/get_function.py,sha256=U4dXy47eKQh7spED7hyyHOepj6bU2U6QFJ0a2RS2y_8,4301
38
44
  beamlit/api/functions/get_function_environment_logs.py,sha256=Ia7bDcx8k7qCBhxsm8jdDSbYGKwdTDYhkAcgv25Zz-o,3816
39
45
  beamlit/api/functions/get_function_metrics.py,sha256=8FC7OCyj2QTXKRHyY7BPKfF2EAzXw0rg-r8yM19fQSc,4413
46
+ beamlit/api/functions/get_function_trace_ids.py,sha256=Sz0DNr7K7z0Qzs9wJ8KYb7C8_vZj1aqoFk38MRYC_Xw,4434
40
47
  beamlit/api/functions/list_functions.py,sha256=Z9PaBzpRCv4cfEMSiBaVLnKzRoWCBys4jOXXBWOzEU8,4167
41
48
  beamlit/api/functions/update_function.py,sha256=sH-Oy2epz-X-59_eDnazzeeUsZMVNqG5J8VPe6nYJkg,4084
42
49
  beamlit/api/history/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -71,6 +78,7 @@ beamlit/api/models/delete_model.py,sha256=4uENeuBKoIooCfniM1uZFjScqgHzlEDxl7aLjA
71
78
  beamlit/api/models/get_model.py,sha256=sTE7fGpJ91svBMSKy7PGySqSOVy5g1YH3oHjhWbMr9s,4285
72
79
  beamlit/api/models/get_model_environment_logs.py,sha256=Xi4c3I0y7y_JbqUDeZEH64oLom9DZ1Uk735j47QvDT0,3939
73
80
  beamlit/api/models/get_model_metrics.py,sha256=06BcFFYS1Ml0tifIbDos9EqH6gSgGnwssKq75vhO5eU,4516
81
+ beamlit/api/models/get_model_trace_ids.py,sha256=xIUVeVf3oa1j8m3x7PO58bB3P3y_5mskKEOpWeJteIk,4365
74
82
  beamlit/api/models/list_models.py,sha256=Keqg_qyTTGB-aJNA6JiMGnLdNwUSLIkzr08sdhhXxo4,4297
75
83
  beamlit/api/models/release_model.py,sha256=ik1HHjOUVnaVJEvbbSS1ByQ2TMzkkUbNiGUXmlTiwBo,3893
76
84
  beamlit/api/models/update_model.py,sha256=odMblGfUK6EAJHpu5mWUtpSNjFB8NvyTgqDp0JUygDA,4521
@@ -116,8 +124,8 @@ beamlit/api/workspaces/update_workspace.py,sha256=qa5DV2UJSUYuB_ibALb4E9ghKpT1Ha
116
124
  beamlit/api/workspaces/update_workspace_user_role.py,sha256=Yn9iuJ4tKtauzBiJyU4-wYUMS9g98X2Om8zs7UkzrY8,4917
117
125
  beamlit/authentication/__init__.py,sha256=wiXqRbc7E-ulrH_ueA9duOGFvXeo7-RvhSD1XbFogMo,1020
118
126
  beamlit/authentication/apikey.py,sha256=KNBTgdi0VBzBAAmSwU2X1QoB58vRbg8wkXb8-GTZCQo,657
119
- beamlit/authentication/authentication.py,sha256=6N4928VcgHQz5jF0aJwvIsPSGglIjhtgvAhfHHVy4H8,3118
120
- beamlit/authentication/clientcredentials.py,sha256=6kbfTjwUkXUArJX8XZLe9ZzbEicQc19tSXBvsTpiXMk,3954
127
+ beamlit/authentication/authentication.py,sha256=8R-3WdQSykNjCbebAW2p8Glvw5nlAmSEZr6Ylo-vPuc,3377
128
+ beamlit/authentication/clientcredentials.py,sha256=cxZPPu--CgizwqX0pdfFQ91gJt1EFKwyy-aBB_dXX7I,3990
121
129
  beamlit/authentication/credentials.py,sha256=p_1xenabCbQuRz7BiFk7oTK4uCxAt_zoyku5o-jcKGE,5343
122
130
  beamlit/authentication/device_mode.py,sha256=tmr22gllKOZwBRub_QjF5pYa425x-nE8tQNpZ_EGR6g,3644
123
131
  beamlit/common/__init__.py,sha256=yDoMJDKj-xjTGl7U1YI59KpWxiOV65HSiUulgO8xdTA,277
@@ -125,10 +133,10 @@ beamlit/common/generate.py,sha256=LtdCju_QayRS4lZrrb_0VHqWWvTcv4Mbf-iV1TB_Qko,75
125
133
  beamlit/common/instrumentation.py,sha256=MsBDfFcMYqGDiHHj4j5hLHE4EWxZExkhmCeFS3SKzJY,3181
126
134
  beamlit/common/logger.py,sha256=VFRbaZh93n8ZGugeeYKe88IP2nI3g2JNa7XN4j8wVJE,1116
127
135
  beamlit/common/secrets.py,sha256=sid81bOe3LflkMKDHwBsBs9nIju8bp5-v9qU9gkyNMc,212
128
- beamlit/common/settings.py,sha256=igwhNY6DPm0tiSW-_2fCkllHdTyXVthVAT6p3kggJxo,5435
136
+ beamlit/common/settings.py,sha256=bxgQxMV5ncNqDGcWS_Wj3nzOF8FgAmC6alMP2fOdEDU,5895
129
137
  beamlit/common/utils.py,sha256=jouz5igBvT37Xn_e94-foCHyQczVim-UzVcoIF6RWJ4,657
130
138
  beamlit/deploy/__init__.py,sha256=GS7l7Jtm2yKs7iNLKcfjYO-rAhUzggQ3xiYSf3oxLBY,91
131
- beamlit/deploy/deploy.py,sha256=rXpiAqlO36Ul1eadBEiwiil-6R2DkbaYHzw-qcqZ0g4,9183
139
+ beamlit/deploy/deploy.py,sha256=on1i93SdECKrLVRMm3V2BRW5JeolPPq1dJHa4Evp0ns,9188
132
140
  beamlit/deploy/format.py,sha256=78tOoeNPJ8969AhQTeFlIwZgQ3un8gmTSMmrYbRQSds,1818
133
141
  beamlit/deploy/parser.py,sha256=uT-bezLX6yjyxr1ogm1GXIT_MeREqHDUBlKiyav5qg0,6912
134
142
  beamlit/functions/__init__.py,sha256=_RPG1Bfg54JGdIPnViAU6n9zD7E1cDNsdXi8oYGskzE,138
@@ -139,11 +147,11 @@ beamlit/functions/github/kit/__init__.py,sha256=jBwPqZv6C23_utukohxqXZwrlicNlI7P
139
147
  beamlit/functions/github/kit/pull_request.py,sha256=wQVeRBakiqu-2ouflO8p1z7D5u07KNsitwyNRrp0KjM,1357
140
148
  beamlit/functions/math/__init__.py,sha256=wie4WME8jT-WpFRrtu-lDlHW31Mg6K2cwstjkUdLF3o,43
141
149
  beamlit/functions/math/math.py,sha256=CpoLJGwuvwCPGnVC8k9GYuIyvfUYPDQHKlZg3cx-z-A,1049
142
- beamlit/functions/mcp/mcp.py,sha256=uGqNOwEgIKdvtVPmCf9Nf_YI_k7zioLvc6jVOpszrg4,4104
143
- beamlit/functions/remote/remote.py,sha256=W60VNSNfBcVed8HVifOjcWN20StmhDjSV06AT35STaY,3276
150
+ beamlit/functions/mcp/mcp.py,sha256=gXzvUPAKmvGQPHUKTVzMiINukxpw1BV6H8M2iOWvIGU,4348
151
+ beamlit/functions/remote/remote.py,sha256=x2eHh4oYkWwHuZWwg5XeylY-E9Opa6SzfN_0396ePZw,3775
144
152
  beamlit/functions/search/__init__.py,sha256=5NAthQ9PBwrkNg1FpLRx4flauvv0HyWuwaVS589c1Pw,49
145
153
  beamlit/functions/search/search.py,sha256=8s9ECltq7YE17j6rTxb12uY2EQY4_eTLHmwlIMThI0w,515
146
- beamlit/models/__init__.py,sha256=NY93_IfysVaEENSQ0pIXYDxS6cEteOlfiY4xyZHKIZY,7458
154
+ beamlit/models/__init__.py,sha256=0BldOldXzMn1A6d1bOhsU8mk7i3uRmh33_U-0IYjIRY,7803
147
155
  beamlit/models/acl.py,sha256=tH67gsl_BMaviSbTaaIkO1g9cWZgJ6VgAnYVjQSzGZY,3952
148
156
  beamlit/models/agent.py,sha256=oGZBwd2Hy-i6q_up4WQ0IvOmxqouR5I1Gk8vXvfLKvc,3384
149
157
  beamlit/models/agent_chain.py,sha256=8PN8wVSayS-LoBN2nahZsOmr6r3t62H_LPDK_8fnkM8,2255
@@ -173,6 +181,9 @@ beamlit/models/function_kit.py,sha256=VrwV4EOrEqs8QgyaI7MyevRCCt2fhsTkOzfQVWXojt
173
181
  beamlit/models/function_metadata.py,sha256=7OKXazGomwAupuMTrROFD67o4D-JCBB33gznzLUj0HI,4608
174
182
  beamlit/models/function_release.py,sha256=T8SuLZBBdgGDvUg3sVluocvrKTvNxzZ6Wq3kjK4lYk4,1955
175
183
  beamlit/models/function_spec.py,sha256=8nTfXLCGqEwCdOHjhF3UH0gwu_CGQZperdhljkxcs-U,10452
184
+ beamlit/models/get_trace_ids_response_200.py,sha256=m2uE11a9wE5c7xPTDVd4CuubQc2cPYJNaYpbcj-V1rU,1275
185
+ beamlit/models/get_trace_logs_response_200.py,sha256=NIFtg8qcE26_oJxoRYkt1KSV2JSYUxdUu45Gxs0Qli0,1280
186
+ beamlit/models/get_trace_response_200.py,sha256=1QePQMknfEP7DjPXb3ulf6v17430R_MJ4SPovdYK0NI,1257
176
187
  beamlit/models/get_workspace_service_accounts_response_200_item.py,sha256=ATEojS0VhRmL6a9JPWT3-fl3plosONbIWa5Jpoe4Pag,2981
177
188
  beamlit/models/increase_and_rate_metric.py,sha256=bRQ05Qi9TMYhYjtN90PeJaMEkNOdgC0A_7aQQBrWCDs,2071
178
189
  beamlit/models/integration_config.py,sha256=lq8yZR1th2qrJmGAk5aEcuvuPy4zAI9XyNol5YjeGVY,1258
@@ -232,6 +243,7 @@ beamlit/models/store_function_kit.py,sha256=S0i3KMHkJ6FwWwMcPqUOYfXi8AYZ21WC7TLI
232
243
  beamlit/models/store_function_labels.py,sha256=ZoEKD_CUDs7HcdHEobDsPz8OcUAZ11pFW3pVYrbz0KQ,1274
233
244
  beamlit/models/store_function_parameter.py,sha256=0iuvA6WVExwzqt5HRNusS9PFtke5_qwVu8fT2MFOH8c,2553
234
245
  beamlit/models/time_fields.py,sha256=5X-SFQ1-cfs5gTvyFjuQ8tfMJJrAGoK0OBZLuOM5phY,2006
246
+ beamlit/models/trace_ids_response.py,sha256=fmXsxlIc6dNEduKjCG-Yd-oC6MhsI2VSUWkWk9MSQ0s,1806
235
247
  beamlit/models/update_workspace_service_account_body.py,sha256=fz2MGqwRfrYkMmL8PaFHQdsu3RQcRljvP6n6JIru45o,2004
236
248
  beamlit/models/update_workspace_service_account_response_200.py,sha256=nCLPHFP_iR1MIpicgQMpbiyme97ZMfTFhyQUEbhzkHI,2968
237
249
  beamlit/models/update_workspace_user_role_body.py,sha256=FyLCWy9oRgUxoFPxxtrDvwzh1kHLkoTZ1pL5w3ayexM,1572
@@ -243,6 +255,6 @@ beamlit/serve/app.py,sha256=OpwPjRdyHZK6J-ziPwhiRDGGa2mvCrFVcBFE6alJVOM,3071
243
255
  beamlit/serve/middlewares/__init__.py,sha256=1dVmnOmhAQWvWktqHkKSIX-YoF6fmMU8xkUQuhg_rJU,148
244
256
  beamlit/serve/middlewares/accesslog.py,sha256=Mu4T4_9OvHybjA0ApzZFpgi2C8f3X1NbUk-76v634XM,631
245
257
  beamlit/serve/middlewares/processtime.py,sha256=lDAaIasZ4bwvN-HKHvZpaD9r-yrkVNZYx4abvbjbrCg,411
246
- beamlit-0.0.28rc24.dist-info/METADATA,sha256=a7WzRFLMm6fMNPOhNGupK4mzPeywTdwmeMrfq-Dr5GQ,2405
247
- beamlit-0.0.28rc24.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
248
- beamlit-0.0.28rc24.dist-info/RECORD,,
258
+ beamlit-0.0.29.dist-info/METADATA,sha256=6io1k9UDgo25M3N_TnaI5udexlJ9LVZPIH6Uv2xO0zU,2401
259
+ beamlit-0.0.29.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
260
+ beamlit-0.0.29.dist-info/RECORD,,