letta-client 1.0.0a11__py3-none-any.whl → 1.0.0a13__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.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

Files changed (38) hide show
  1. letta_client/_client.py +23 -0
  2. letta_client/_streaming.py +4 -6
  3. letta_client/_version.py +1 -1
  4. letta_client/resources/__init__.py +14 -0
  5. letta_client/resources/agents/agents.py +0 -8
  6. letta_client/resources/groups/groups.py +1 -17
  7. letta_client/resources/groups/messages.py +8 -2
  8. letta_client/resources/identities/identities.py +1 -17
  9. letta_client/resources/mcp_servers/__init__.py +47 -0
  10. letta_client/resources/mcp_servers/mcp_servers.py +1165 -0
  11. letta_client/resources/mcp_servers/refresh.py +192 -0
  12. letta_client/resources/mcp_servers/tools.py +351 -0
  13. letta_client/resources/runs/messages.py +8 -2
  14. letta_client/resources/steps/steps.py +1 -9
  15. letta_client/resources/tools.py +4 -4
  16. letta_client/types/__init__.py +6 -0
  17. letta_client/types/agent_create_params.py +1 -5
  18. letta_client/types/group_create_params.py +1 -5
  19. letta_client/types/group_modify_params.py +1 -5
  20. letta_client/types/identity_create_params.py +1 -5
  21. letta_client/types/identity_upsert_params.py +1 -5
  22. letta_client/types/mcp_server_create_params.py +67 -0
  23. letta_client/types/mcp_server_create_response.py +74 -0
  24. letta_client/types/mcp_server_list_response.py +86 -0
  25. letta_client/types/mcp_server_modify_params.py +76 -0
  26. letta_client/types/mcp_server_modify_response.py +74 -0
  27. letta_client/types/mcp_server_retrieve_response.py +74 -0
  28. letta_client/types/mcp_servers/__init__.py +8 -0
  29. letta_client/types/mcp_servers/refresh_trigger_params.py +12 -0
  30. letta_client/types/mcp_servers/tool_list_response.py +10 -0
  31. letta_client/types/mcp_servers/tool_run_params.py +15 -0
  32. letta_client/types/mcp_servers/tool_run_response.py +43 -0
  33. letta_client/types/step_list_params.py +1 -5
  34. letta_client/types/tool.py +4 -4
  35. {letta_client-1.0.0a11.dist-info → letta_client-1.0.0a13.dist-info}/METADATA +1 -1
  36. {letta_client-1.0.0a11.dist-info → letta_client-1.0.0a13.dist-info}/RECORD +38 -23
  37. {letta_client-1.0.0a11.dist-info → letta_client-1.0.0a13.dist-info}/WHEEL +0 -0
  38. {letta_client-1.0.0a11.dist-info → letta_client-1.0.0a13.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,192 @@
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 Optional
6
+
7
+ import httpx
8
+
9
+ from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
10
+ from ..._utils import maybe_transform, async_maybe_transform
11
+ from ..._compat import cached_property
12
+ from ..._resource import SyncAPIResource, AsyncAPIResource
13
+ from ..._response import (
14
+ to_raw_response_wrapper,
15
+ to_streamed_response_wrapper,
16
+ async_to_raw_response_wrapper,
17
+ async_to_streamed_response_wrapper,
18
+ )
19
+ from ..._base_client import make_request_options
20
+ from ...types.mcp_servers import refresh_trigger_params
21
+
22
+ __all__ = ["RefreshResource", "AsyncRefreshResource"]
23
+
24
+
25
+ class RefreshResource(SyncAPIResource):
26
+ @cached_property
27
+ def with_raw_response(self) -> RefreshResourceWithRawResponse:
28
+ """
29
+ This property can be used as a prefix for any HTTP method call to return
30
+ the raw response object instead of the parsed content.
31
+
32
+ For more information, see https://www.github.com/letta-ai/letta-python#accessing-raw-response-data-eg-headers
33
+ """
34
+ return RefreshResourceWithRawResponse(self)
35
+
36
+ @cached_property
37
+ def with_streaming_response(self) -> RefreshResourceWithStreamingResponse:
38
+ """
39
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
40
+
41
+ For more information, see https://www.github.com/letta-ai/letta-python#with_streaming_response
42
+ """
43
+ return RefreshResourceWithStreamingResponse(self)
44
+
45
+ def trigger(
46
+ self,
47
+ mcp_server_id: str,
48
+ *,
49
+ agent_id: Optional[str] | Omit = omit,
50
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
51
+ # The extra values given here take precedence over values defined on the client or passed to this method.
52
+ extra_headers: Headers | None = None,
53
+ extra_query: Query | None = None,
54
+ extra_body: Body | None = None,
55
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
56
+ ) -> object:
57
+ """Refresh tools for an MCP server by:
58
+
59
+ 1.
60
+
61
+ Fetching current tools from the MCP server
62
+ 2. Deleting tools that no longer exist on the server
63
+ 3. Updating schemas for existing tools
64
+ 4. Adding new tools from the server
65
+
66
+ Returns a summary of changes made.
67
+
68
+ Args:
69
+ extra_headers: Send extra headers
70
+
71
+ extra_query: Add additional query parameters to the request
72
+
73
+ extra_body: Add additional JSON properties to the request
74
+
75
+ timeout: Override the client-level default timeout for this request, in seconds
76
+ """
77
+ if not mcp_server_id:
78
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
79
+ return self._patch(
80
+ f"/v1/mcp-servers/{mcp_server_id}/refresh",
81
+ options=make_request_options(
82
+ extra_headers=extra_headers,
83
+ extra_query=extra_query,
84
+ extra_body=extra_body,
85
+ timeout=timeout,
86
+ query=maybe_transform({"agent_id": agent_id}, refresh_trigger_params.RefreshTriggerParams),
87
+ ),
88
+ cast_to=object,
89
+ )
90
+
91
+
92
+ class AsyncRefreshResource(AsyncAPIResource):
93
+ @cached_property
94
+ def with_raw_response(self) -> AsyncRefreshResourceWithRawResponse:
95
+ """
96
+ This property can be used as a prefix for any HTTP method call to return
97
+ the raw response object instead of the parsed content.
98
+
99
+ For more information, see https://www.github.com/letta-ai/letta-python#accessing-raw-response-data-eg-headers
100
+ """
101
+ return AsyncRefreshResourceWithRawResponse(self)
102
+
103
+ @cached_property
104
+ def with_streaming_response(self) -> AsyncRefreshResourceWithStreamingResponse:
105
+ """
106
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
107
+
108
+ For more information, see https://www.github.com/letta-ai/letta-python#with_streaming_response
109
+ """
110
+ return AsyncRefreshResourceWithStreamingResponse(self)
111
+
112
+ async def trigger(
113
+ self,
114
+ mcp_server_id: str,
115
+ *,
116
+ agent_id: Optional[str] | Omit = omit,
117
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
118
+ # The extra values given here take precedence over values defined on the client or passed to this method.
119
+ extra_headers: Headers | None = None,
120
+ extra_query: Query | None = None,
121
+ extra_body: Body | None = None,
122
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
123
+ ) -> object:
124
+ """Refresh tools for an MCP server by:
125
+
126
+ 1.
127
+
128
+ Fetching current tools from the MCP server
129
+ 2. Deleting tools that no longer exist on the server
130
+ 3. Updating schemas for existing tools
131
+ 4. Adding new tools from the server
132
+
133
+ Returns a summary of changes made.
134
+
135
+ Args:
136
+ extra_headers: Send extra headers
137
+
138
+ extra_query: Add additional query parameters to the request
139
+
140
+ extra_body: Add additional JSON properties to the request
141
+
142
+ timeout: Override the client-level default timeout for this request, in seconds
143
+ """
144
+ if not mcp_server_id:
145
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
146
+ return await self._patch(
147
+ f"/v1/mcp-servers/{mcp_server_id}/refresh",
148
+ options=make_request_options(
149
+ extra_headers=extra_headers,
150
+ extra_query=extra_query,
151
+ extra_body=extra_body,
152
+ timeout=timeout,
153
+ query=await async_maybe_transform({"agent_id": agent_id}, refresh_trigger_params.RefreshTriggerParams),
154
+ ),
155
+ cast_to=object,
156
+ )
157
+
158
+
159
+ class RefreshResourceWithRawResponse:
160
+ def __init__(self, refresh: RefreshResource) -> None:
161
+ self._refresh = refresh
162
+
163
+ self.trigger = to_raw_response_wrapper(
164
+ refresh.trigger,
165
+ )
166
+
167
+
168
+ class AsyncRefreshResourceWithRawResponse:
169
+ def __init__(self, refresh: AsyncRefreshResource) -> None:
170
+ self._refresh = refresh
171
+
172
+ self.trigger = async_to_raw_response_wrapper(
173
+ refresh.trigger,
174
+ )
175
+
176
+
177
+ class RefreshResourceWithStreamingResponse:
178
+ def __init__(self, refresh: RefreshResource) -> None:
179
+ self._refresh = refresh
180
+
181
+ self.trigger = to_streamed_response_wrapper(
182
+ refresh.trigger,
183
+ )
184
+
185
+
186
+ class AsyncRefreshResourceWithStreamingResponse:
187
+ def __init__(self, refresh: AsyncRefreshResource) -> None:
188
+ self._refresh = refresh
189
+
190
+ self.trigger = async_to_streamed_response_wrapper(
191
+ refresh.trigger,
192
+ )
@@ -0,0 +1,351 @@
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 Dict
6
+
7
+ import httpx
8
+
9
+ from ..._types import Body, Omit, Query, Headers, NotGiven, omit, not_given
10
+ from ..._utils import maybe_transform, async_maybe_transform
11
+ from ..._compat import cached_property
12
+ from ..._resource import SyncAPIResource, AsyncAPIResource
13
+ from ..._response import (
14
+ to_raw_response_wrapper,
15
+ to_streamed_response_wrapper,
16
+ async_to_raw_response_wrapper,
17
+ async_to_streamed_response_wrapper,
18
+ )
19
+ from ...types.tool import Tool
20
+ from ..._base_client import make_request_options
21
+ from ...types.mcp_servers import tool_run_params
22
+ from ...types.mcp_servers.tool_run_response import ToolRunResponse
23
+ from ...types.mcp_servers.tool_list_response import ToolListResponse
24
+
25
+ __all__ = ["ToolsResource", "AsyncToolsResource"]
26
+
27
+
28
+ class ToolsResource(SyncAPIResource):
29
+ @cached_property
30
+ def with_raw_response(self) -> ToolsResourceWithRawResponse:
31
+ """
32
+ This property can be used as a prefix for any HTTP method call to return
33
+ the raw response object instead of the parsed content.
34
+
35
+ For more information, see https://www.github.com/letta-ai/letta-python#accessing-raw-response-data-eg-headers
36
+ """
37
+ return ToolsResourceWithRawResponse(self)
38
+
39
+ @cached_property
40
+ def with_streaming_response(self) -> ToolsResourceWithStreamingResponse:
41
+ """
42
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
43
+
44
+ For more information, see https://www.github.com/letta-ai/letta-python#with_streaming_response
45
+ """
46
+ return ToolsResourceWithStreamingResponse(self)
47
+
48
+ def retrieve(
49
+ self,
50
+ tool_id: str,
51
+ *,
52
+ mcp_server_id: str,
53
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
54
+ # The extra values given here take precedence over values defined on the client or passed to this method.
55
+ extra_headers: Headers | None = None,
56
+ extra_query: Query | None = None,
57
+ extra_body: Body | None = None,
58
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
59
+ ) -> Tool:
60
+ """
61
+ Get a specific MCP tool by its ID
62
+
63
+ Args:
64
+ extra_headers: Send extra headers
65
+
66
+ extra_query: Add additional query parameters to the request
67
+
68
+ extra_body: Add additional JSON properties to the request
69
+
70
+ timeout: Override the client-level default timeout for this request, in seconds
71
+ """
72
+ if not mcp_server_id:
73
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
74
+ if not tool_id:
75
+ raise ValueError(f"Expected a non-empty value for `tool_id` but received {tool_id!r}")
76
+ return self._get(
77
+ f"/v1/mcp-servers/{mcp_server_id}/tools/{tool_id}",
78
+ options=make_request_options(
79
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
80
+ ),
81
+ cast_to=Tool,
82
+ )
83
+
84
+ def list(
85
+ self,
86
+ mcp_server_id: str,
87
+ *,
88
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
89
+ # The extra values given here take precedence over values defined on the client or passed to this method.
90
+ extra_headers: Headers | None = None,
91
+ extra_query: Query | None = None,
92
+ extra_body: Body | None = None,
93
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
94
+ ) -> ToolListResponse:
95
+ """
96
+ Get a list of all tools for a specific MCP server
97
+
98
+ Args:
99
+ extra_headers: Send extra headers
100
+
101
+ extra_query: Add additional query parameters to the request
102
+
103
+ extra_body: Add additional JSON properties to the request
104
+
105
+ timeout: Override the client-level default timeout for this request, in seconds
106
+ """
107
+ if not mcp_server_id:
108
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
109
+ return self._get(
110
+ f"/v1/mcp-servers/{mcp_server_id}/tools",
111
+ options=make_request_options(
112
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
113
+ ),
114
+ cast_to=ToolListResponse,
115
+ )
116
+
117
+ def run(
118
+ self,
119
+ tool_id: str,
120
+ *,
121
+ mcp_server_id: str,
122
+ args: Dict[str, object] | Omit = omit,
123
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
124
+ # The extra values given here take precedence over values defined on the client or passed to this method.
125
+ extra_headers: Headers | None = None,
126
+ extra_query: Query | None = None,
127
+ extra_body: Body | None = None,
128
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
129
+ ) -> ToolRunResponse:
130
+ """
131
+ Execute a specific MCP tool
132
+
133
+ The request body should contain the tool arguments in the MCPToolExecuteRequest
134
+ format.
135
+
136
+ Args:
137
+ args: Arguments to pass to the MCP tool
138
+
139
+ extra_headers: Send extra headers
140
+
141
+ extra_query: Add additional query parameters to the request
142
+
143
+ extra_body: Add additional JSON properties to the request
144
+
145
+ timeout: Override the client-level default timeout for this request, in seconds
146
+ """
147
+ if not mcp_server_id:
148
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
149
+ if not tool_id:
150
+ raise ValueError(f"Expected a non-empty value for `tool_id` but received {tool_id!r}")
151
+ return self._post(
152
+ f"/v1/mcp-servers/{mcp_server_id}/tools/{tool_id}/run",
153
+ body=maybe_transform({"args": args}, tool_run_params.ToolRunParams),
154
+ options=make_request_options(
155
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
156
+ ),
157
+ cast_to=ToolRunResponse,
158
+ )
159
+
160
+
161
+ class AsyncToolsResource(AsyncAPIResource):
162
+ @cached_property
163
+ def with_raw_response(self) -> AsyncToolsResourceWithRawResponse:
164
+ """
165
+ This property can be used as a prefix for any HTTP method call to return
166
+ the raw response object instead of the parsed content.
167
+
168
+ For more information, see https://www.github.com/letta-ai/letta-python#accessing-raw-response-data-eg-headers
169
+ """
170
+ return AsyncToolsResourceWithRawResponse(self)
171
+
172
+ @cached_property
173
+ def with_streaming_response(self) -> AsyncToolsResourceWithStreamingResponse:
174
+ """
175
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
176
+
177
+ For more information, see https://www.github.com/letta-ai/letta-python#with_streaming_response
178
+ """
179
+ return AsyncToolsResourceWithStreamingResponse(self)
180
+
181
+ async def retrieve(
182
+ self,
183
+ tool_id: str,
184
+ *,
185
+ mcp_server_id: str,
186
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
187
+ # The extra values given here take precedence over values defined on the client or passed to this method.
188
+ extra_headers: Headers | None = None,
189
+ extra_query: Query | None = None,
190
+ extra_body: Body | None = None,
191
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
192
+ ) -> Tool:
193
+ """
194
+ Get a specific MCP tool by its ID
195
+
196
+ Args:
197
+ extra_headers: Send extra headers
198
+
199
+ extra_query: Add additional query parameters to the request
200
+
201
+ extra_body: Add additional JSON properties to the request
202
+
203
+ timeout: Override the client-level default timeout for this request, in seconds
204
+ """
205
+ if not mcp_server_id:
206
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
207
+ if not tool_id:
208
+ raise ValueError(f"Expected a non-empty value for `tool_id` but received {tool_id!r}")
209
+ return await self._get(
210
+ f"/v1/mcp-servers/{mcp_server_id}/tools/{tool_id}",
211
+ options=make_request_options(
212
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
213
+ ),
214
+ cast_to=Tool,
215
+ )
216
+
217
+ async def list(
218
+ self,
219
+ mcp_server_id: str,
220
+ *,
221
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
222
+ # The extra values given here take precedence over values defined on the client or passed to this method.
223
+ extra_headers: Headers | None = None,
224
+ extra_query: Query | None = None,
225
+ extra_body: Body | None = None,
226
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
227
+ ) -> ToolListResponse:
228
+ """
229
+ Get a list of all tools for a specific MCP server
230
+
231
+ Args:
232
+ extra_headers: Send extra headers
233
+
234
+ extra_query: Add additional query parameters to the request
235
+
236
+ extra_body: Add additional JSON properties to the request
237
+
238
+ timeout: Override the client-level default timeout for this request, in seconds
239
+ """
240
+ if not mcp_server_id:
241
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
242
+ return await self._get(
243
+ f"/v1/mcp-servers/{mcp_server_id}/tools",
244
+ options=make_request_options(
245
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
246
+ ),
247
+ cast_to=ToolListResponse,
248
+ )
249
+
250
+ async def run(
251
+ self,
252
+ tool_id: str,
253
+ *,
254
+ mcp_server_id: str,
255
+ args: Dict[str, object] | Omit = omit,
256
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
257
+ # The extra values given here take precedence over values defined on the client or passed to this method.
258
+ extra_headers: Headers | None = None,
259
+ extra_query: Query | None = None,
260
+ extra_body: Body | None = None,
261
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
262
+ ) -> ToolRunResponse:
263
+ """
264
+ Execute a specific MCP tool
265
+
266
+ The request body should contain the tool arguments in the MCPToolExecuteRequest
267
+ format.
268
+
269
+ Args:
270
+ args: Arguments to pass to the MCP tool
271
+
272
+ extra_headers: Send extra headers
273
+
274
+ extra_query: Add additional query parameters to the request
275
+
276
+ extra_body: Add additional JSON properties to the request
277
+
278
+ timeout: Override the client-level default timeout for this request, in seconds
279
+ """
280
+ if not mcp_server_id:
281
+ raise ValueError(f"Expected a non-empty value for `mcp_server_id` but received {mcp_server_id!r}")
282
+ if not tool_id:
283
+ raise ValueError(f"Expected a non-empty value for `tool_id` but received {tool_id!r}")
284
+ return await self._post(
285
+ f"/v1/mcp-servers/{mcp_server_id}/tools/{tool_id}/run",
286
+ body=await async_maybe_transform({"args": args}, tool_run_params.ToolRunParams),
287
+ options=make_request_options(
288
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
289
+ ),
290
+ cast_to=ToolRunResponse,
291
+ )
292
+
293
+
294
+ class ToolsResourceWithRawResponse:
295
+ def __init__(self, tools: ToolsResource) -> None:
296
+ self._tools = tools
297
+
298
+ self.retrieve = to_raw_response_wrapper(
299
+ tools.retrieve,
300
+ )
301
+ self.list = to_raw_response_wrapper(
302
+ tools.list,
303
+ )
304
+ self.run = to_raw_response_wrapper(
305
+ tools.run,
306
+ )
307
+
308
+
309
+ class AsyncToolsResourceWithRawResponse:
310
+ def __init__(self, tools: AsyncToolsResource) -> None:
311
+ self._tools = tools
312
+
313
+ self.retrieve = async_to_raw_response_wrapper(
314
+ tools.retrieve,
315
+ )
316
+ self.list = async_to_raw_response_wrapper(
317
+ tools.list,
318
+ )
319
+ self.run = async_to_raw_response_wrapper(
320
+ tools.run,
321
+ )
322
+
323
+
324
+ class ToolsResourceWithStreamingResponse:
325
+ def __init__(self, tools: ToolsResource) -> None:
326
+ self._tools = tools
327
+
328
+ self.retrieve = to_streamed_response_wrapper(
329
+ tools.retrieve,
330
+ )
331
+ self.list = to_streamed_response_wrapper(
332
+ tools.list,
333
+ )
334
+ self.run = to_streamed_response_wrapper(
335
+ tools.run,
336
+ )
337
+
338
+
339
+ class AsyncToolsResourceWithStreamingResponse:
340
+ def __init__(self, tools: AsyncToolsResource) -> None:
341
+ self._tools = tools
342
+
343
+ self.retrieve = async_to_streamed_response_wrapper(
344
+ tools.retrieve,
345
+ )
346
+ self.list = async_to_streamed_response_wrapper(
347
+ tools.list,
348
+ )
349
+ self.run = async_to_streamed_response_wrapper(
350
+ tools.run,
351
+ )
@@ -17,10 +17,12 @@ from ..._response import (
17
17
  async_to_raw_response_wrapper,
18
18
  async_to_streamed_response_wrapper,
19
19
  )
20
+ from ..._streaming import Stream, AsyncStream
20
21
  from ...pagination import SyncArrayPage, AsyncArrayPage
21
22
  from ...types.runs import message_list_params, message_stream_params
22
23
  from ..._base_client import AsyncPaginator, make_request_options
23
24
  from ...types.agents.letta_message_union import LettaMessageUnion
25
+ from ...types.agents.letta_streaming_response import LettaStreamingResponse
24
26
 
25
27
  __all__ = ["MessagesResource", "AsyncMessagesResource"]
26
28
 
@@ -124,7 +126,7 @@ class MessagesResource(SyncAPIResource):
124
126
  extra_query: Query | None = None,
125
127
  extra_body: Body | None = None,
126
128
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
127
- ) -> object:
129
+ ) -> Stream[LettaStreamingResponse]:
128
130
  """
129
131
  Retrieve Stream
130
132
 
@@ -164,6 +166,8 @@ class MessagesResource(SyncAPIResource):
164
166
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
165
167
  ),
166
168
  cast_to=object,
169
+ stream=True,
170
+ stream_cls=Stream[LettaStreamingResponse],
167
171
  )
168
172
 
169
173
 
@@ -266,7 +270,7 @@ class AsyncMessagesResource(AsyncAPIResource):
266
270
  extra_query: Query | None = None,
267
271
  extra_body: Body | None = None,
268
272
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
269
- ) -> object:
273
+ ) -> AsyncStream[LettaStreamingResponse]:
270
274
  """
271
275
  Retrieve Stream
272
276
 
@@ -306,6 +310,8 @@ class AsyncMessagesResource(AsyncAPIResource):
306
310
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
307
311
  ),
308
312
  cast_to=object,
313
+ stream=True,
314
+ stream_cls=AsyncStream[LettaStreamingResponse],
309
315
  )
310
316
 
311
317
 
@@ -25,7 +25,7 @@ from .metrics import (
25
25
  AsyncMetricsResourceWithStreamingResponse,
26
26
  )
27
27
  from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
28
- from ..._utils import maybe_transform, strip_not_given
28
+ from ..._utils import maybe_transform
29
29
  from .feedback import (
30
30
  FeedbackResource,
31
31
  AsyncFeedbackResource,
@@ -145,7 +145,6 @@ class StepsResource(SyncAPIResource):
145
145
  start_date: Optional[str] | Omit = omit,
146
146
  tags: Optional[SequenceNotStr[str]] | Omit = omit,
147
147
  trace_ids: Optional[SequenceNotStr[str]] | Omit = omit,
148
- x_project: str | Omit = omit,
149
148
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
150
149
  # The extra values given here take precedence over values defined on the client or passed to this method.
151
150
  extra_headers: Headers | None = None,
@@ -186,8 +185,6 @@ class StepsResource(SyncAPIResource):
186
185
 
187
186
  trace_ids: Filter by trace ids returned by the server
188
187
 
189
- x_project: Filter by project slug to associate with the group (cloud only).
190
-
191
188
  extra_headers: Send extra headers
192
189
 
193
190
  extra_query: Add additional query parameters to the request
@@ -196,7 +193,6 @@ class StepsResource(SyncAPIResource):
196
193
 
197
194
  timeout: Override the client-level default timeout for this request, in seconds
198
195
  """
199
- extra_headers = {**strip_not_given({"X-Project": x_project}), **(extra_headers or {})}
200
196
  return self._get_api_list(
201
197
  "/v1/steps/",
202
198
  page=SyncArrayPage[Step],
@@ -317,7 +313,6 @@ class AsyncStepsResource(AsyncAPIResource):
317
313
  start_date: Optional[str] | Omit = omit,
318
314
  tags: Optional[SequenceNotStr[str]] | Omit = omit,
319
315
  trace_ids: Optional[SequenceNotStr[str]] | Omit = omit,
320
- x_project: str | Omit = omit,
321
316
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
322
317
  # The extra values given here take precedence over values defined on the client or passed to this method.
323
318
  extra_headers: Headers | None = None,
@@ -358,8 +353,6 @@ class AsyncStepsResource(AsyncAPIResource):
358
353
 
359
354
  trace_ids: Filter by trace ids returned by the server
360
355
 
361
- x_project: Filter by project slug to associate with the group (cloud only).
362
-
363
356
  extra_headers: Send extra headers
364
357
 
365
358
  extra_query: Add additional query parameters to the request
@@ -368,7 +361,6 @@ class AsyncStepsResource(AsyncAPIResource):
368
361
 
369
362
  timeout: Override the client-level default timeout for this request, in seconds
370
363
  """
371
- extra_headers = {**strip_not_given({"X-Project": x_project}), **(extra_headers or {})}
372
364
  return self._get_api_list(
373
365
  "/v1/steps/",
374
366
  page=AsyncArrayPage[Step],
@@ -2,10 +2,14 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import typing
6
+ import inspect
5
7
  from typing import Dict, Iterable, Optional
8
+ from textwrap import dedent
6
9
  from typing_extensions import Literal
7
10
 
8
11
  import httpx
12
+ from pydantic import BaseModel
9
13
 
10
14
  from ..types import tool_list_params, tool_count_params, tool_create_params, tool_modify_params, tool_upsert_params
11
15
  from .._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
@@ -25,10 +29,6 @@ from ..types.tool_count_response import ToolCountResponse
25
29
  from ..types.npm_requirement_param import NpmRequirementParam
26
30
  from ..types.pip_requirement_param import PipRequirementParam
27
31
  from ..types.tool_upsert_base_tools_response import ToolUpsertBaseToolsResponse
28
- import typing
29
- from pydantic import BaseModel
30
- from textwrap import dedent
31
- import inspect
32
32
 
33
33
  __all__ = ["ToolsResource", "AsyncToolsResource"]
34
34