letta-client 1.0.0a8__py3-none-any.whl → 1.0.0a10__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 (54) hide show
  1. letta_client/_version.py +1 -1
  2. letta_client/pagination.py +174 -1
  3. letta_client/resources/agents/agents.py +396 -396
  4. letta_client/resources/agents/blocks.py +200 -190
  5. letta_client/resources/agents/files.py +13 -10
  6. letta_client/resources/agents/messages.py +367 -367
  7. letta_client/resources/agents/tools.py +6 -6
  8. letta_client/resources/archives.py +121 -111
  9. letta_client/resources/batches/messages.py +14 -11
  10. letta_client/resources/blocks/blocks.py +241 -222
  11. letta_client/resources/folders/folders.py +133 -133
  12. letta_client/resources/groups/groups.py +141 -141
  13. letta_client/resources/groups/messages.py +198 -198
  14. letta_client/resources/identities/blocks.py +7 -7
  15. letta_client/resources/identities/identities.py +141 -141
  16. letta_client/resources/tools.py +794 -194
  17. letta_client/types/__init__.py +11 -8
  18. letta_client/types/{agent_update_params.py → agent_modify_params.py} +2 -2
  19. letta_client/types/agent_state.py +6 -3
  20. letta_client/types/agents/__init__.py +6 -3
  21. letta_client/types/agents/block.py +6 -3
  22. letta_client/types/agents/block_list_response.py +63 -0
  23. letta_client/types/agents/{block_update_params.py → block_modify_params.py} +8 -5
  24. letta_client/types/agents/block_modify_response.py +63 -0
  25. letta_client/types/agents/block_retrieve_response.py +63 -0
  26. letta_client/types/agents/file_list_response.py +3 -14
  27. letta_client/types/agents/{message_update_params.py → message_modify_params.py} +2 -2
  28. letta_client/types/agents/{message_update_response.py → message_modify_response.py} +2 -2
  29. letta_client/types/archive_list_params.py +3 -0
  30. letta_client/types/{archive_update_params.py → archive_modify_params.py} +2 -2
  31. letta_client/types/batches/__init__.py +0 -1
  32. letta_client/types/block_create_params.py +6 -3
  33. letta_client/types/block_create_response.py +63 -0
  34. letta_client/types/block_list_response.py +63 -0
  35. letta_client/types/{block_update_params.py → block_modify_params.py} +8 -5
  36. letta_client/types/block_modify_response.py +63 -0
  37. letta_client/types/block_retrieve_response.py +63 -0
  38. letta_client/types/create_block_param.py +6 -3
  39. letta_client/types/{folder_update_params.py → folder_modify_params.py} +2 -2
  40. letta_client/types/{group_update_params.py → group_modify_params.py} +2 -2
  41. letta_client/types/groups/__init__.py +2 -2
  42. letta_client/types/groups/{message_update_params.py → message_modify_params.py} +2 -2
  43. letta_client/types/groups/{message_update_response.py → message_modify_response.py} +2 -2
  44. letta_client/types/identities/__init__.py +1 -0
  45. letta_client/types/identities/block_list_response.py +63 -0
  46. letta_client/types/{identity_update_params.py → identity_modify_params.py} +2 -2
  47. letta_client/types/tool.py +106 -2
  48. letta_client/types/{tool_update_params.py → tool_modify_params.py} +2 -2
  49. {letta_client-1.0.0a8.dist-info → letta_client-1.0.0a10.dist-info}/METADATA +1 -1
  50. {letta_client-1.0.0a8.dist-info → letta_client-1.0.0a10.dist-info}/RECORD +52 -46
  51. letta_client/types/archive_list_response.py +0 -10
  52. letta_client/types/batches/message_list_response.py +0 -12
  53. {letta_client-1.0.0a8.dist-info → letta_client-1.0.0a10.dist-info}/WHEEL +0 -0
  54. {letta_client-1.0.0a8.dist-info → letta_client-1.0.0a10.dist-info}/licenses/LICENSE +0 -0
letta_client/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "letta_client"
4
- __version__ = "1.0.0-alpha.8" # x-release-please-version
4
+ __version__ = "1.0.0-alpha.10" # x-release-please-version
@@ -9,7 +9,14 @@ from ._utils import is_mapping
9
9
  from ._models import BaseModel
10
10
  from ._base_client import BasePage, PageInfo, BaseSyncPage, BaseAsyncPage
11
11
 
12
- __all__ = ["SyncArrayPage", "AsyncArrayPage"]
12
+ __all__ = [
13
+ "SyncArrayPage",
14
+ "AsyncArrayPage",
15
+ "SyncObjectPage",
16
+ "AsyncObjectPage",
17
+ "SyncNextFilesPage",
18
+ "AsyncNextFilesPage",
19
+ ]
13
20
 
14
21
  _BaseModelT = TypeVar("_BaseModelT", bound=BaseModel)
15
22
 
@@ -21,6 +28,16 @@ class ArrayPageItem(Protocol):
21
28
  id: Optional[str]
22
29
 
23
30
 
31
+ @runtime_checkable
32
+ class ObjectPageItem(Protocol):
33
+ id: Optional[str]
34
+
35
+
36
+ @runtime_checkable
37
+ class NextFilesPageItem(Protocol):
38
+ next_cursor: Optional[str]
39
+
40
+
24
41
  class SyncArrayPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
25
42
  items: List[_T]
26
43
 
@@ -105,3 +122,159 @@ class AsyncArrayPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
105
122
  **(cast(Mapping[str, Any], data) if is_mapping(data) else {"items": data}),
106
123
  },
107
124
  )
125
+
126
+
127
+ class SyncObjectPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
128
+ messages: List[_T]
129
+
130
+ @override
131
+ def _get_page_items(self) -> List[_T]:
132
+ messages = self.messages
133
+ if not messages:
134
+ return []
135
+ return messages
136
+
137
+ @override
138
+ def next_page_info(self) -> Optional[PageInfo]:
139
+ is_forwards = not self._options.params.get("before", False)
140
+
141
+ messages = self.messages
142
+ if not messages:
143
+ return None
144
+
145
+ if is_forwards:
146
+ item = cast(Any, messages[-1])
147
+ if not isinstance(item, ObjectPageItem) or item.id is None:
148
+ # TODO emit warning log
149
+ return None
150
+
151
+ return PageInfo(params={"after": item.id})
152
+ else:
153
+ item = cast(Any, self.messages[0])
154
+ if not isinstance(item, ObjectPageItem) or item.id is None:
155
+ # TODO emit warning log
156
+ return None
157
+
158
+ return PageInfo(params={"before": item.id})
159
+
160
+
161
+ class AsyncObjectPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
162
+ messages: List[_T]
163
+
164
+ @override
165
+ def _get_page_items(self) -> List[_T]:
166
+ messages = self.messages
167
+ if not messages:
168
+ return []
169
+ return messages
170
+
171
+ @override
172
+ def next_page_info(self) -> Optional[PageInfo]:
173
+ is_forwards = not self._options.params.get("before", False)
174
+
175
+ messages = self.messages
176
+ if not messages:
177
+ return None
178
+
179
+ if is_forwards:
180
+ item = cast(Any, messages[-1])
181
+ if not isinstance(item, ObjectPageItem) or item.id is None:
182
+ # TODO emit warning log
183
+ return None
184
+
185
+ return PageInfo(params={"after": item.id})
186
+ else:
187
+ item = cast(Any, self.messages[0])
188
+ if not isinstance(item, ObjectPageItem) or item.id is None:
189
+ # TODO emit warning log
190
+ return None
191
+
192
+ return PageInfo(params={"before": item.id})
193
+
194
+
195
+ class SyncNextFilesPage(BaseSyncPage[_T], BasePage[_T], Generic[_T]):
196
+ files: List[_T]
197
+ next_cursor: Optional[str] = None
198
+ has_more: Optional[bool] = None
199
+
200
+ @override
201
+ def _get_page_items(self) -> List[_T]:
202
+ files = self.files
203
+ if not files:
204
+ return []
205
+ return files
206
+
207
+ @override
208
+ def has_next_page(self) -> bool:
209
+ has_more = self.has_more
210
+ if has_more is not None and has_more is False:
211
+ return False
212
+
213
+ return super().has_next_page()
214
+
215
+ @override
216
+ def next_page_info(self) -> Optional[PageInfo]:
217
+ is_forwards = not self._options.params.get("before", False)
218
+
219
+ files = self.files
220
+ if not files:
221
+ return None
222
+
223
+ if is_forwards:
224
+ item = cast(Any, files[-1])
225
+ if not isinstance(item, NextFilesPageItem) or item.next_cursor is None:
226
+ # TODO emit warning log
227
+ return None
228
+
229
+ return PageInfo(params={"after": item.next_cursor})
230
+ else:
231
+ item = cast(Any, self.files[0])
232
+ if not isinstance(item, NextFilesPageItem) or item.next_cursor is None:
233
+ # TODO emit warning log
234
+ return None
235
+
236
+ return PageInfo(params={"before": item.next_cursor})
237
+
238
+
239
+ class AsyncNextFilesPage(BaseAsyncPage[_T], BasePage[_T], Generic[_T]):
240
+ files: List[_T]
241
+ next_cursor: Optional[str] = None
242
+ has_more: Optional[bool] = None
243
+
244
+ @override
245
+ def _get_page_items(self) -> List[_T]:
246
+ files = self.files
247
+ if not files:
248
+ return []
249
+ return files
250
+
251
+ @override
252
+ def has_next_page(self) -> bool:
253
+ has_more = self.has_more
254
+ if has_more is not None and has_more is False:
255
+ return False
256
+
257
+ return super().has_next_page()
258
+
259
+ @override
260
+ def next_page_info(self) -> Optional[PageInfo]:
261
+ is_forwards = not self._options.params.get("before", False)
262
+
263
+ files = self.files
264
+ if not files:
265
+ return None
266
+
267
+ if is_forwards:
268
+ item = cast(Any, files[-1])
269
+ if not isinstance(item, NextFilesPageItem) or item.next_cursor is None:
270
+ # TODO emit warning log
271
+ return None
272
+
273
+ return PageInfo(params={"after": item.next_cursor})
274
+ else:
275
+ item = cast(Any, self.files[0])
276
+ if not isinstance(item, NextFilesPageItem) or item.next_cursor is None:
277
+ # TODO emit warning log
278
+ return None
279
+
280
+ return PageInfo(params={"before": item.next_cursor})