letta-client 1.0.0a10__py3-none-any.whl → 1.0.0a12__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 (76) hide show
  1. letta_client/_client.py +28 -1
  2. letta_client/_streaming.py +44 -8
  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/agents/blocks.py +15 -17
  7. letta_client/resources/agents/files.py +10 -13
  8. letta_client/resources/agents/folders.py +10 -13
  9. letta_client/resources/agents/messages.py +14 -4
  10. letta_client/resources/agents/tools.py +10 -13
  11. letta_client/resources/archives.py +10 -12
  12. letta_client/resources/batches/batches.py +10 -12
  13. letta_client/resources/batches/messages.py +11 -14
  14. letta_client/resources/blocks/blocks.py +19 -22
  15. letta_client/resources/folders/agents.py +10 -13
  16. letta_client/resources/folders/files.py +9 -12
  17. letta_client/resources/folders/folders.py +10 -12
  18. letta_client/resources/groups/groups.py +1 -17
  19. letta_client/resources/identities/blocks.py +7 -7
  20. letta_client/resources/identities/identities.py +11 -29
  21. letta_client/resources/mcp_servers/__init__.py +47 -0
  22. letta_client/resources/mcp_servers/mcp_servers.py +1165 -0
  23. letta_client/resources/mcp_servers/refresh.py +192 -0
  24. letta_client/resources/mcp_servers/tools.py +351 -0
  25. letta_client/resources/runs/runs.py +11 -13
  26. letta_client/resources/steps/steps.py +1 -9
  27. letta_client/resources/tags.py +10 -13
  28. letta_client/resources/tools.py +14 -16
  29. letta_client/types/__init__.py +13 -4
  30. letta_client/types/agent_create_params.py +1 -5
  31. letta_client/types/agents/__init__.py +2 -3
  32. letta_client/types/agents/file_list_response.py +14 -3
  33. letta_client/types/agents/folder_list_response.py +7 -3
  34. letta_client/types/agents/letta_streaming_response.py +70 -0
  35. letta_client/types/agents/tool_list_response.py +10 -0
  36. letta_client/types/archive_list_response.py +10 -0
  37. letta_client/types/batch_list_response.py +10 -0
  38. letta_client/types/batches/__init__.py +1 -0
  39. letta_client/types/batches/message_list_response.py +12 -0
  40. letta_client/types/{block_list_response.py → block_response.py} +5 -5
  41. letta_client/types/folder_list_response.py +10 -0
  42. letta_client/types/folders/agent_list_response.py +2 -1
  43. letta_client/types/folders/file_list_response.py +7 -4
  44. letta_client/types/group_create_params.py +1 -5
  45. letta_client/types/group_modify_params.py +1 -5
  46. letta_client/types/identities/__init__.py +0 -1
  47. letta_client/types/identity_create_params.py +1 -5
  48. letta_client/types/identity_list_response.py +10 -0
  49. letta_client/types/identity_upsert_params.py +1 -5
  50. letta_client/types/mcp_server_create_params.py +67 -0
  51. letta_client/types/mcp_server_create_response.py +74 -0
  52. letta_client/types/mcp_server_list_response.py +86 -0
  53. letta_client/types/mcp_server_modify_params.py +76 -0
  54. letta_client/types/mcp_server_modify_response.py +74 -0
  55. letta_client/types/mcp_server_retrieve_response.py +74 -0
  56. letta_client/types/mcp_servers/__init__.py +8 -0
  57. letta_client/types/mcp_servers/refresh_trigger_params.py +12 -0
  58. letta_client/types/mcp_servers/tool_list_response.py +10 -0
  59. letta_client/types/mcp_servers/tool_run_params.py +15 -0
  60. letta_client/types/mcp_servers/tool_run_response.py +43 -0
  61. letta_client/types/run_list_response.py +10 -0
  62. letta_client/types/step_list_params.py +1 -5
  63. letta_client/types/tag_list_response.py +2 -1
  64. letta_client/types/tool.py +28 -28
  65. letta_client/types/tool_list_response.py +10 -0
  66. {letta_client-1.0.0a10.dist-info → letta_client-1.0.0a12.dist-info}/METADATA +1 -1
  67. {letta_client-1.0.0a10.dist-info → letta_client-1.0.0a12.dist-info}/RECORD +69 -52
  68. letta_client/types/agents/block_list_response.py +0 -63
  69. letta_client/types/agents/block_modify_response.py +0 -63
  70. letta_client/types/agents/block_retrieve_response.py +0 -63
  71. letta_client/types/block_create_response.py +0 -63
  72. letta_client/types/block_modify_response.py +0 -63
  73. letta_client/types/block_retrieve_response.py +0 -63
  74. letta_client/types/identities/block_list_response.py +0 -63
  75. {letta_client-1.0.0a10.dist-info → letta_client-1.0.0a12.dist-info}/WHEEL +0 -0
  76. {letta_client-1.0.0a10.dist-info → letta_client-1.0.0a12.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
+ )
@@ -25,7 +25,7 @@ from .usage import (
25
25
  )
26
26
  from ...types import StopReasonType, run_list_params
27
27
  from ..._types import Body, Omit, Query, Headers, NotGiven, SequenceNotStr, omit, not_given
28
- from ..._utils import maybe_transform
28
+ from ..._utils import maybe_transform, async_maybe_transform
29
29
  from .messages import (
30
30
  MessagesResource,
31
31
  AsyncMessagesResource,
@@ -42,10 +42,10 @@ from ..._response import (
42
42
  async_to_raw_response_wrapper,
43
43
  async_to_streamed_response_wrapper,
44
44
  )
45
- from ...pagination import SyncArrayPage, AsyncArrayPage
46
- from ..._base_client import AsyncPaginator, make_request_options
45
+ from ..._base_client import make_request_options
47
46
  from ...types.agents.run import Run
48
47
  from ...types.stop_reason_type import StopReasonType
48
+ from ...types.run_list_response import RunListResponse
49
49
 
50
50
  __all__ = ["RunsResource", "AsyncRunsResource"]
51
51
 
@@ -136,7 +136,7 @@ class RunsResource(SyncAPIResource):
136
136
  extra_query: Query | None = None,
137
137
  extra_body: Body | None = None,
138
138
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
139
- ) -> SyncArrayPage[Run]:
139
+ ) -> RunListResponse:
140
140
  """
141
141
  List all runs.
142
142
 
@@ -178,9 +178,8 @@ class RunsResource(SyncAPIResource):
178
178
 
179
179
  timeout: Override the client-level default timeout for this request, in seconds
180
180
  """
181
- return self._get_api_list(
181
+ return self._get(
182
182
  "/v1/runs/",
183
- page=SyncArrayPage[Run],
184
183
  options=make_request_options(
185
184
  extra_headers=extra_headers,
186
185
  extra_query=extra_query,
@@ -204,7 +203,7 @@ class RunsResource(SyncAPIResource):
204
203
  run_list_params.RunListParams,
205
204
  ),
206
205
  ),
207
- model=Run,
206
+ cast_to=RunListResponse,
208
207
  )
209
208
 
210
209
 
@@ -273,7 +272,7 @@ class AsyncRunsResource(AsyncAPIResource):
273
272
  cast_to=Run,
274
273
  )
275
274
 
276
- def list(
275
+ async def list(
277
276
  self,
278
277
  *,
279
278
  active: bool | Omit = omit,
@@ -294,7 +293,7 @@ class AsyncRunsResource(AsyncAPIResource):
294
293
  extra_query: Query | None = None,
295
294
  extra_body: Body | None = None,
296
295
  timeout: float | httpx.Timeout | None | NotGiven = not_given,
297
- ) -> AsyncPaginator[Run, AsyncArrayPage[Run]]:
296
+ ) -> RunListResponse:
298
297
  """
299
298
  List all runs.
300
299
 
@@ -336,15 +335,14 @@ class AsyncRunsResource(AsyncAPIResource):
336
335
 
337
336
  timeout: Override the client-level default timeout for this request, in seconds
338
337
  """
339
- return self._get_api_list(
338
+ return await self._get(
340
339
  "/v1/runs/",
341
- page=AsyncArrayPage[Run],
342
340
  options=make_request_options(
343
341
  extra_headers=extra_headers,
344
342
  extra_query=extra_query,
345
343
  extra_body=extra_body,
346
344
  timeout=timeout,
347
- query=maybe_transform(
345
+ query=await async_maybe_transform(
348
346
  {
349
347
  "active": active,
350
348
  "after": after,
@@ -362,7 +360,7 @@ class AsyncRunsResource(AsyncAPIResource):
362
360
  run_list_params.RunListParams,
363
361
  ),
364
362
  ),
365
- model=Run,
363
+ cast_to=RunListResponse,
366
364
  )
367
365
 
368
366
 
@@ -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],