letta-client 0.1.318__py3-none-any.whl → 0.1.320__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 (211) hide show
  1. letta_client/__init__.py +51 -9
  2. letta_client/agents/__init__.py +6 -2
  3. letta_client/agents/client.py +50 -213
  4. letta_client/agents/files/client.py +51 -6
  5. letta_client/agents/files/raw_client.py +94 -9
  6. letta_client/agents/messages/__init__.py +2 -2
  7. letta_client/agents/messages/client.py +116 -26
  8. letta_client/agents/messages/raw_client.py +121 -19
  9. letta_client/agents/messages/types/__init__.py +2 -2
  10. letta_client/agents/messages/types/{messages_preview_raw_payload_request.py → messages_preview_request.py} +1 -1
  11. letta_client/agents/raw_client.py +50 -253
  12. letta_client/agents/types/__init__.py +4 -0
  13. letta_client/agents/types/agents_list_request_order.py +5 -0
  14. letta_client/agents/types/agents_list_request_order_by.py +5 -0
  15. letta_client/archives/__init__.py +7 -0
  16. letta_client/archives/client.py +362 -0
  17. letta_client/archives/raw_client.py +448 -0
  18. letta_client/archives/types/__init__.py +7 -0
  19. letta_client/archives/types/list_archives_request_order.py +5 -0
  20. letta_client/base_client.py +3 -6
  21. letta_client/batches/__init__.py +5 -0
  22. letta_client/batches/client.py +68 -8
  23. letta_client/batches/messages/__init__.py +7 -0
  24. letta_client/{messages → batches/messages}/client.py +50 -43
  25. letta_client/{messages → batches/messages}/raw_client.py +52 -45
  26. letta_client/batches/messages/types/__init__.py +7 -0
  27. letta_client/batches/messages/types/messages_list_request_order.py +5 -0
  28. letta_client/batches/raw_client.py +71 -6
  29. letta_client/batches/types/__init__.py +7 -0
  30. letta_client/batches/types/batches_list_request_order.py +5 -0
  31. letta_client/blocks/__init__.py +3 -1
  32. letta_client/blocks/agents/__init__.py +3 -0
  33. letta_client/blocks/agents/client.py +57 -2
  34. letta_client/blocks/agents/raw_client.py +51 -0
  35. letta_client/blocks/agents/types/__init__.py +7 -0
  36. letta_client/blocks/agents/types/agents_list_request_order.py +5 -0
  37. letta_client/blocks/client.py +25 -4
  38. letta_client/blocks/raw_client.py +25 -4
  39. letta_client/blocks/types/__init__.py +7 -0
  40. letta_client/blocks/types/blocks_list_request_order.py +5 -0
  41. letta_client/core/client_wrapper.py +2 -2
  42. letta_client/errors/__init__.py +9 -1
  43. letta_client/errors/internal_server_error.py +10 -0
  44. letta_client/folders/__init__.py +14 -2
  45. letta_client/folders/agents/__init__.py +7 -0
  46. letta_client/folders/agents/client.py +176 -0
  47. letta_client/folders/agents/raw_client.py +182 -0
  48. letta_client/folders/agents/types/__init__.py +7 -0
  49. letta_client/folders/agents/types/agents_list_request_order.py +5 -0
  50. letta_client/folders/client.py +96 -86
  51. letta_client/folders/files/__init__.py +3 -0
  52. letta_client/folders/files/client.py +49 -10
  53. letta_client/folders/files/raw_client.py +41 -10
  54. letta_client/folders/files/types/__init__.py +7 -0
  55. letta_client/folders/files/types/files_list_request_order.py +5 -0
  56. letta_client/folders/passages/__init__.py +3 -0
  57. letta_client/folders/passages/client.py +43 -14
  58. letta_client/folders/passages/raw_client.py +35 -14
  59. letta_client/folders/passages/types/__init__.py +7 -0
  60. letta_client/folders/passages/types/passages_list_request_order.py +5 -0
  61. letta_client/folders/raw_client.py +83 -104
  62. letta_client/folders/types/__init__.py +7 -0
  63. letta_client/folders/types/folders_list_request_order.py +5 -0
  64. letta_client/groups/__init__.py +4 -2
  65. letta_client/groups/client.py +27 -6
  66. letta_client/groups/messages/__init__.py +2 -2
  67. letta_client/groups/messages/client.py +39 -18
  68. letta_client/groups/messages/raw_client.py +35 -14
  69. letta_client/groups/messages/types/__init__.py +2 -1
  70. letta_client/groups/messages/types/messages_list_request_order.py +5 -0
  71. letta_client/groups/raw_client.py +27 -6
  72. letta_client/groups/types/__init__.py +2 -1
  73. letta_client/groups/types/groups_list_request_order.py +5 -0
  74. letta_client/identities/__init__.py +12 -2
  75. letta_client/identities/agents/__init__.py +7 -0
  76. letta_client/identities/agents/client.py +177 -0
  77. letta_client/identities/agents/raw_client.py +183 -0
  78. letta_client/identities/agents/types/__init__.py +7 -0
  79. letta_client/identities/agents/types/agents_list_request_order.py +5 -0
  80. letta_client/identities/blocks/__init__.py +7 -0
  81. letta_client/identities/blocks/client.py +177 -0
  82. letta_client/identities/blocks/raw_client.py +183 -0
  83. letta_client/identities/blocks/types/__init__.py +7 -0
  84. letta_client/identities/blocks/types/blocks_list_request_order.py +5 -0
  85. letta_client/identities/client.py +37 -0
  86. letta_client/identities/raw_client.py +27 -0
  87. letta_client/identities/types/__init__.py +7 -0
  88. letta_client/identities/types/identities_list_request_order.py +5 -0
  89. letta_client/jobs/client.py +10 -2
  90. letta_client/jobs/raw_client.py +10 -2
  91. letta_client/models/__init__.py +3 -0
  92. letta_client/models/client.py +3 -0
  93. letta_client/{embedding_models → models/embeddings}/client.py +14 -14
  94. letta_client/{embedding_models → models/embeddings}/raw_client.py +10 -10
  95. letta_client/providers/__init__.py +3 -0
  96. letta_client/providers/client.py +151 -82
  97. letta_client/providers/raw_client.py +165 -72
  98. letta_client/providers/types/__init__.py +7 -0
  99. letta_client/providers/types/providers_list_request_order.py +5 -0
  100. letta_client/runs/__init__.py +2 -1
  101. letta_client/runs/client.py +21 -0
  102. letta_client/runs/messages/__init__.py +3 -0
  103. letta_client/runs/messages/client.py +15 -49
  104. letta_client/runs/messages/raw_client.py +13 -49
  105. letta_client/runs/messages/types/__init__.py +7 -0
  106. letta_client/runs/messages/types/messages_list_request_order.py +5 -0
  107. letta_client/runs/raw_client.py +21 -0
  108. letta_client/steps/__init__.py +13 -3
  109. letta_client/steps/client.py +32 -83
  110. letta_client/steps/feedback/client.py +21 -6
  111. letta_client/steps/feedback/raw_client.py +29 -6
  112. letta_client/steps/messages/__init__.py +7 -0
  113. letta_client/steps/messages/client.py +177 -0
  114. letta_client/steps/messages/raw_client.py +183 -0
  115. letta_client/steps/messages/types/__init__.py +8 -0
  116. letta_client/steps/messages/types/messages_list_request_order.py +5 -0
  117. letta_client/steps/messages/types/messages_list_response_item.py +25 -0
  118. letta_client/steps/metrics/client.py +110 -0
  119. letta_client/steps/metrics/raw_client.py +122 -0
  120. letta_client/steps/raw_client.py +17 -107
  121. letta_client/steps/trace/__init__.py +4 -0
  122. letta_client/steps/trace/client.py +110 -0
  123. letta_client/steps/trace/raw_client.py +122 -0
  124. letta_client/steps/types/__init__.py +2 -1
  125. letta_client/steps/types/steps_list_request_order.py +5 -0
  126. letta_client/tags/__init__.py +3 -0
  127. letta_client/tags/client.py +57 -4
  128. letta_client/tags/raw_client.py +49 -2
  129. letta_client/tags/types/__init__.py +7 -0
  130. letta_client/tags/types/tags_list_request_order.py +5 -0
  131. letta_client/telemetry/client.py +8 -0
  132. letta_client/telemetry/raw_client.py +8 -0
  133. letta_client/templates/__init__.py +64 -0
  134. letta_client/templates/agents/__init__.py +58 -0
  135. letta_client/templates/agents/types/__init__.py +66 -0
  136. letta_client/templates/agents/types/agents_create_response.py +6 -0
  137. letta_client/templates/agents/types/agents_create_response_group.py +52 -0
  138. letta_client/templates/agents/types/agents_create_response_group_base_template_id.py +12 -0
  139. letta_client/templates/agents/types/agents_create_response_group_base_template_id_item.py +5 -0
  140. letta_client/templates/agents/types/agents_create_response_group_deployment_id.py +12 -0
  141. letta_client/templates/agents/types/agents_create_response_group_deployment_id_item.py +5 -0
  142. letta_client/templates/agents/types/agents_create_response_group_hidden.py +12 -0
  143. letta_client/templates/agents/types/agents_create_response_group_hidden_item.py +5 -0
  144. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id.py +14 -0
  145. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id_item.py +5 -0
  146. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id.py +12 -0
  147. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id_item.py +5 -0
  148. letta_client/templates/agents/types/agents_create_response_group_manager_type.py +7 -0
  149. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length.py +14 -0
  150. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length_item.py +5 -0
  151. letta_client/templates/agents/types/agents_create_response_group_max_turns.py +12 -0
  152. letta_client/templates/agents/types/agents_create_response_group_max_turns_item.py +5 -0
  153. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length.py +14 -0
  154. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length_item.py +5 -0
  155. letta_client/templates/agents/types/agents_create_response_group_project_id.py +12 -0
  156. letta_client/templates/agents/types/agents_create_response_group_project_id_item.py +5 -0
  157. letta_client/templates/agents/types/agents_create_response_group_shared_block_ids.py +5 -0
  158. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency.py +14 -0
  159. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency_item.py +5 -0
  160. letta_client/templates/agents/types/agents_create_response_group_template_id.py +12 -0
  161. letta_client/templates/agents/types/agents_create_response_group_template_id_item.py +5 -0
  162. letta_client/templates/agents/types/agents_create_response_group_termination_token.py +12 -0
  163. letta_client/templates/agents/types/agents_create_response_group_termination_token_item.py +5 -0
  164. letta_client/templates/agents/types/agents_create_response_group_turns_counter.py +12 -0
  165. letta_client/templates/agents/types/agents_create_response_group_turns_counter_item.py +5 -0
  166. letta_client/templates/client.py +260 -0
  167. letta_client/templates/raw_client.py +395 -0
  168. letta_client/templates/types/__init__.py +8 -0
  169. letta_client/templates/types/templates_get_template_snapshot_response.py +4 -0
  170. letta_client/templates/types/templates_get_template_snapshot_response_blocks_item.py +1 -0
  171. letta_client/templates/types/templates_get_template_snapshot_response_relationships_item.py +23 -0
  172. letta_client/templates/types/templates_migrate_deployment_response.py +21 -0
  173. letta_client/templates/types/templates_set_current_template_from_snapshot_response.py +21 -0
  174. letta_client/tools/__init__.py +2 -0
  175. letta_client/tools/client.py +47 -20
  176. letta_client/tools/raw_client.py +43 -26
  177. letta_client/tools/types/__init__.py +2 -0
  178. letta_client/tools/types/tools_list_request_order.py +5 -0
  179. letta_client/types/__init__.py +10 -2
  180. letta_client/types/agent_state.py +5 -0
  181. letta_client/types/archive.py +77 -0
  182. letta_client/types/batch_job.py +6 -0
  183. letta_client/types/{body_export_agent_serialized.py → body_export_agent.py} +1 -1
  184. letta_client/types/child_tool_rule.py +1 -1
  185. letta_client/types/conditional_tool_rule.py +1 -1
  186. letta_client/types/continue_tool_rule.py +1 -1
  187. letta_client/types/deployment_entity.py +2 -0
  188. letta_client/types/init_tool_rule.py +1 -1
  189. letta_client/types/internal_server_error_body.py +20 -0
  190. letta_client/types/internal_template_agent_create.py +5 -0
  191. letta_client/types/job.py +6 -0
  192. letta_client/types/letta_schemas_agent_file_agent_schema.py +5 -0
  193. letta_client/types/max_count_per_step_tool_rule.py +1 -1
  194. letta_client/types/memory.py +7 -1
  195. letta_client/types/memory_agent_type.py +7 -0
  196. letta_client/types/parent_tool_rule.py +1 -1
  197. letta_client/types/required_before_exit_tool_rule.py +1 -1
  198. letta_client/types/requires_approval_tool_rule.py +1 -1
  199. letta_client/types/run.py +6 -0
  200. letta_client/types/source.py +6 -0
  201. letta_client/types/step.py +1 -1
  202. letta_client/types/stop_reason_type.py +1 -0
  203. letta_client/types/terminal_tool_rule.py +1 -1
  204. letta_client/types/vector_db_provider.py +5 -0
  205. letta_client/voice/client.py +2 -8
  206. letta_client/voice/raw_client.py +0 -8
  207. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
  208. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/RECORD +211 -114
  209. /letta_client/{embedding_models → models/embeddings}/__init__.py +0 -0
  210. /letta_client/{messages → steps/metrics}/__init__.py +0 -0
  211. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
@@ -11,6 +11,7 @@ from ...core.request_options import RequestOptions
11
11
  from ...core.unchecked_base_model import construct_type
12
12
  from ...errors.unprocessable_entity_error import UnprocessableEntityError
13
13
  from ...types.http_validation_error import HttpValidationError
14
+ from ...types.paginated_agent_files import PaginatedAgentFiles
14
15
 
15
16
 
16
17
  class RawFilesClient:
@@ -180,27 +181,70 @@ class RawFilesClient:
180
181
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
181
182
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
182
183
 
183
- def list(self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[None]:
184
+ def list(
185
+ self,
186
+ agent_id: str,
187
+ *,
188
+ cursor: typing.Optional[str] = None,
189
+ limit: typing.Optional[int] = None,
190
+ is_open: typing.Optional[bool] = None,
191
+ request_options: typing.Optional[RequestOptions] = None,
192
+ ) -> HttpResponse[PaginatedAgentFiles]:
184
193
  """
194
+ Get the files attached to an agent with their open/closed status (paginated).
195
+
185
196
  Parameters
186
197
  ----------
187
198
  agent_id : str
188
199
 
200
+ cursor : typing.Optional[str]
201
+ Pagination cursor from previous response
202
+
203
+ limit : typing.Optional[int]
204
+ Number of items to return (1-100)
205
+
206
+ is_open : typing.Optional[bool]
207
+ Filter by open status (true for open files, false for closed files)
208
+
189
209
  request_options : typing.Optional[RequestOptions]
190
210
  Request-specific configuration.
191
211
 
192
212
  Returns
193
213
  -------
194
- HttpResponse[None]
214
+ HttpResponse[PaginatedAgentFiles]
215
+ Successful Response
195
216
  """
196
217
  _response = self._client_wrapper.httpx_client.request(
197
218
  f"v1/agents/{jsonable_encoder(agent_id)}/files",
198
- method="PATCH",
219
+ method="GET",
220
+ params={
221
+ "cursor": cursor,
222
+ "limit": limit,
223
+ "is_open": is_open,
224
+ },
199
225
  request_options=request_options,
200
226
  )
201
227
  try:
202
228
  if 200 <= _response.status_code < 300:
203
- return HttpResponse(response=_response, data=None)
229
+ _data = typing.cast(
230
+ PaginatedAgentFiles,
231
+ construct_type(
232
+ type_=PaginatedAgentFiles, # type: ignore
233
+ object_=_response.json(),
234
+ ),
235
+ )
236
+ return HttpResponse(response=_response, data=_data)
237
+ if _response.status_code == 422:
238
+ raise UnprocessableEntityError(
239
+ headers=dict(_response.headers),
240
+ body=typing.cast(
241
+ HttpValidationError,
242
+ construct_type(
243
+ type_=HttpValidationError, # type: ignore
244
+ object_=_response.json(),
245
+ ),
246
+ ),
247
+ )
204
248
  _response_json = _response.json()
205
249
  except JSONDecodeError:
206
250
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -375,28 +419,69 @@ class AsyncRawFilesClient:
375
419
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
376
420
 
377
421
  async def list(
378
- self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None
379
- ) -> AsyncHttpResponse[None]:
422
+ self,
423
+ agent_id: str,
424
+ *,
425
+ cursor: typing.Optional[str] = None,
426
+ limit: typing.Optional[int] = None,
427
+ is_open: typing.Optional[bool] = None,
428
+ request_options: typing.Optional[RequestOptions] = None,
429
+ ) -> AsyncHttpResponse[PaginatedAgentFiles]:
380
430
  """
431
+ Get the files attached to an agent with their open/closed status (paginated).
432
+
381
433
  Parameters
382
434
  ----------
383
435
  agent_id : str
384
436
 
437
+ cursor : typing.Optional[str]
438
+ Pagination cursor from previous response
439
+
440
+ limit : typing.Optional[int]
441
+ Number of items to return (1-100)
442
+
443
+ is_open : typing.Optional[bool]
444
+ Filter by open status (true for open files, false for closed files)
445
+
385
446
  request_options : typing.Optional[RequestOptions]
386
447
  Request-specific configuration.
387
448
 
388
449
  Returns
389
450
  -------
390
- AsyncHttpResponse[None]
451
+ AsyncHttpResponse[PaginatedAgentFiles]
452
+ Successful Response
391
453
  """
392
454
  _response = await self._client_wrapper.httpx_client.request(
393
455
  f"v1/agents/{jsonable_encoder(agent_id)}/files",
394
- method="PATCH",
456
+ method="GET",
457
+ params={
458
+ "cursor": cursor,
459
+ "limit": limit,
460
+ "is_open": is_open,
461
+ },
395
462
  request_options=request_options,
396
463
  )
397
464
  try:
398
465
  if 200 <= _response.status_code < 300:
399
- return AsyncHttpResponse(response=_response, data=None)
466
+ _data = typing.cast(
467
+ PaginatedAgentFiles,
468
+ construct_type(
469
+ type_=PaginatedAgentFiles, # type: ignore
470
+ object_=_response.json(),
471
+ ),
472
+ )
473
+ return AsyncHttpResponse(response=_response, data=_data)
474
+ if _response.status_code == 422:
475
+ raise UnprocessableEntityError(
476
+ headers=dict(_response.headers),
477
+ body=typing.cast(
478
+ HttpValidationError,
479
+ construct_type(
480
+ type_=HttpValidationError, # type: ignore
481
+ object_=_response.json(),
482
+ ),
483
+ ),
484
+ )
400
485
  _response_json = _response.json()
401
486
  except JSONDecodeError:
402
487
  raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
@@ -8,7 +8,7 @@ from .types import (
8
8
  MessageSearchRequestSearchMode,
9
9
  MessagesModifyRequest,
10
10
  MessagesModifyResponse,
11
- MessagesPreviewRawPayloadRequest,
11
+ MessagesPreviewRequest,
12
12
  )
13
13
 
14
14
  __all__ = [
@@ -17,5 +17,5 @@ __all__ = [
17
17
  "MessageSearchRequestSearchMode",
18
18
  "MessagesModifyRequest",
19
19
  "MessagesModifyResponse",
20
- "MessagesPreviewRawPayloadRequest",
20
+ "MessagesPreviewRequest",
21
21
  ]
@@ -20,7 +20,7 @@ from .types.letta_streaming_response import LettaStreamingResponse
20
20
  from .types.message_search_request_search_mode import MessageSearchRequestSearchMode
21
21
  from .types.messages_modify_request import MessagesModifyRequest
22
22
  from .types.messages_modify_response import MessagesModifyResponse
23
- from .types.messages_preview_raw_payload_request import MessagesPreviewRawPayloadRequest
23
+ from .types.messages_preview_request import MessagesPreviewRequest
24
24
 
25
25
  # this is used as the default value for optional parameters
26
26
  OMIT = typing.cast(typing.Any, ...)
@@ -185,7 +185,7 @@ class MessagesClient:
185
185
  role="user",
186
186
  content=[
187
187
  TextContent(
188
- text="text",
188
+ text="The sky above the port was the color of television, tuned to a dead channel.",
189
189
  )
190
190
  ],
191
191
  )
@@ -329,7 +329,7 @@ class MessagesClient:
329
329
  role="user",
330
330
  content=[
331
331
  TextContent(
332
- text="text",
332
+ text="The sky above the port was the color of television, tuned to a dead channel.",
333
333
  )
334
334
  ],
335
335
  )
@@ -403,13 +403,14 @@ class MessagesClient:
403
403
  search_mode: typing.Optional[MessageSearchRequestSearchMode] = OMIT,
404
404
  roles: typing.Optional[typing.Sequence[MessageRole]] = OMIT,
405
405
  project_id: typing.Optional[str] = OMIT,
406
+ template_id: typing.Optional[str] = OMIT,
406
407
  limit: typing.Optional[int] = OMIT,
407
408
  start_date: typing.Optional[dt.datetime] = OMIT,
408
409
  end_date: typing.Optional[dt.datetime] = OMIT,
409
410
  request_options: typing.Optional[RequestOptions] = None,
410
411
  ) -> typing.List[MessageSearchResult]:
411
412
  """
412
- Search messages across the entire organization with optional project filtering. Returns messages with FTS/vector ranks and total RRF score.
413
+ Search messages across the entire organization with optional project and template filtering. Returns messages with FTS/vector ranks and total RRF score.
413
414
 
414
415
  This is a cloud-only feature.
415
416
 
@@ -427,6 +428,9 @@ class MessagesClient:
427
428
  project_id : typing.Optional[str]
428
429
  Filter messages by project ID
429
430
 
431
+ template_id : typing.Optional[str]
432
+ Filter messages by template ID
433
+
430
434
  limit : typing.Optional[int]
431
435
  Maximum number of results to return
432
436
 
@@ -459,6 +463,7 @@ class MessagesClient:
459
463
  search_mode=search_mode,
460
464
  roles=roles,
461
465
  project_id=project_id,
466
+ template_id=template_id,
462
467
  limit=limit,
463
468
  start_date=start_date,
464
469
  end_date=end_date,
@@ -601,12 +606,8 @@ class MessagesClient:
601
606
  )
602
607
  return _response.data
603
608
 
604
- def preview_raw_payload(
605
- self,
606
- agent_id: str,
607
- *,
608
- request: MessagesPreviewRawPayloadRequest,
609
- request_options: typing.Optional[RequestOptions] = None,
609
+ def preview(
610
+ self, agent_id: str, *, request: MessagesPreviewRequest, request_options: typing.Optional[RequestOptions] = None
610
611
  ) -> typing.Dict[str, typing.Optional[typing.Any]]:
611
612
  """
612
613
  Inspect the raw LLM request payload without sending it.
@@ -619,7 +620,7 @@ class MessagesClient:
619
620
  ----------
620
621
  agent_id : str
621
622
 
622
- request : MessagesPreviewRawPayloadRequest
623
+ request : MessagesPreviewRequest
623
624
 
624
625
  request_options : typing.Optional[RequestOptions]
625
626
  Request-specific configuration.
@@ -637,7 +638,7 @@ class MessagesClient:
637
638
  project="YOUR_PROJECT",
638
639
  token="YOUR_TOKEN",
639
640
  )
640
- client.agents.messages.preview_raw_payload(
641
+ client.agents.messages.preview(
641
642
  agent_id="agent_id",
642
643
  request=LettaRequest(
643
644
  messages=[
@@ -653,7 +654,48 @@ class MessagesClient:
653
654
  ),
654
655
  )
655
656
  """
656
- _response = self._raw_client.preview_raw_payload(agent_id, request=request, request_options=request_options)
657
+ _response = self._raw_client.preview(agent_id, request=request, request_options=request_options)
658
+ return _response.data
659
+
660
+ def summarize(
661
+ self, agent_id: str, *, max_message_length: int, request_options: typing.Optional[RequestOptions] = None
662
+ ) -> None:
663
+ """
664
+ Summarize an agent's conversation history to a target message length.
665
+
666
+ This endpoint summarizes the current message history for a given agent,
667
+ truncating and compressing it down to the specified `max_message_length`.
668
+
669
+ Parameters
670
+ ----------
671
+ agent_id : str
672
+
673
+ max_message_length : int
674
+ Maximum number of messages to retain after summarization.
675
+
676
+ request_options : typing.Optional[RequestOptions]
677
+ Request-specific configuration.
678
+
679
+ Returns
680
+ -------
681
+ None
682
+
683
+ Examples
684
+ --------
685
+ from letta_client import Letta
686
+
687
+ client = Letta(
688
+ project="YOUR_PROJECT",
689
+ token="YOUR_TOKEN",
690
+ )
691
+ client.agents.messages.summarize(
692
+ agent_id="agent_id",
693
+ max_message_length=1,
694
+ )
695
+ """
696
+ _response = self._raw_client.summarize(
697
+ agent_id, max_message_length=max_message_length, request_options=request_options
698
+ )
657
699
  return _response.data
658
700
 
659
701
 
@@ -829,7 +871,7 @@ class AsyncMessagesClient:
829
871
  role="user",
830
872
  content=[
831
873
  TextContent(
832
- text="text",
874
+ text="The sky above the port was the color of television, tuned to a dead channel.",
833
875
  )
834
876
  ],
835
877
  )
@@ -991,7 +1033,7 @@ class AsyncMessagesClient:
991
1033
  role="user",
992
1034
  content=[
993
1035
  TextContent(
994
- text="text",
1036
+ text="The sky above the port was the color of television, tuned to a dead channel.",
995
1037
  )
996
1038
  ],
997
1039
  )
@@ -1077,13 +1119,14 @@ class AsyncMessagesClient:
1077
1119
  search_mode: typing.Optional[MessageSearchRequestSearchMode] = OMIT,
1078
1120
  roles: typing.Optional[typing.Sequence[MessageRole]] = OMIT,
1079
1121
  project_id: typing.Optional[str] = OMIT,
1122
+ template_id: typing.Optional[str] = OMIT,
1080
1123
  limit: typing.Optional[int] = OMIT,
1081
1124
  start_date: typing.Optional[dt.datetime] = OMIT,
1082
1125
  end_date: typing.Optional[dt.datetime] = OMIT,
1083
1126
  request_options: typing.Optional[RequestOptions] = None,
1084
1127
  ) -> typing.List[MessageSearchResult]:
1085
1128
  """
1086
- Search messages across the entire organization with optional project filtering. Returns messages with FTS/vector ranks and total RRF score.
1129
+ Search messages across the entire organization with optional project and template filtering. Returns messages with FTS/vector ranks and total RRF score.
1087
1130
 
1088
1131
  This is a cloud-only feature.
1089
1132
 
@@ -1101,6 +1144,9 @@ class AsyncMessagesClient:
1101
1144
  project_id : typing.Optional[str]
1102
1145
  Filter messages by project ID
1103
1146
 
1147
+ template_id : typing.Optional[str]
1148
+ Filter messages by template ID
1149
+
1104
1150
  limit : typing.Optional[int]
1105
1151
  Maximum number of results to return
1106
1152
 
@@ -1141,6 +1187,7 @@ class AsyncMessagesClient:
1141
1187
  search_mode=search_mode,
1142
1188
  roles=roles,
1143
1189
  project_id=project_id,
1190
+ template_id=template_id,
1144
1191
  limit=limit,
1145
1192
  start_date=start_date,
1146
1193
  end_date=end_date,
@@ -1299,12 +1346,8 @@ class AsyncMessagesClient:
1299
1346
  )
1300
1347
  return _response.data
1301
1348
 
1302
- async def preview_raw_payload(
1303
- self,
1304
- agent_id: str,
1305
- *,
1306
- request: MessagesPreviewRawPayloadRequest,
1307
- request_options: typing.Optional[RequestOptions] = None,
1349
+ async def preview(
1350
+ self, agent_id: str, *, request: MessagesPreviewRequest, request_options: typing.Optional[RequestOptions] = None
1308
1351
  ) -> typing.Dict[str, typing.Optional[typing.Any]]:
1309
1352
  """
1310
1353
  Inspect the raw LLM request payload without sending it.
@@ -1317,7 +1360,7 @@ class AsyncMessagesClient:
1317
1360
  ----------
1318
1361
  agent_id : str
1319
1362
 
1320
- request : MessagesPreviewRawPayloadRequest
1363
+ request : MessagesPreviewRequest
1321
1364
 
1322
1365
  request_options : typing.Optional[RequestOptions]
1323
1366
  Request-specific configuration.
@@ -1340,7 +1383,7 @@ class AsyncMessagesClient:
1340
1383
 
1341
1384
 
1342
1385
  async def main() -> None:
1343
- await client.agents.messages.preview_raw_payload(
1386
+ await client.agents.messages.preview(
1344
1387
  agent_id="agent_id",
1345
1388
  request=LettaRequest(
1346
1389
  messages=[
@@ -1359,7 +1402,54 @@ class AsyncMessagesClient:
1359
1402
 
1360
1403
  asyncio.run(main())
1361
1404
  """
1362
- _response = await self._raw_client.preview_raw_payload(
1363
- agent_id, request=request, request_options=request_options
1405
+ _response = await self._raw_client.preview(agent_id, request=request, request_options=request_options)
1406
+ return _response.data
1407
+
1408
+ async def summarize(
1409
+ self, agent_id: str, *, max_message_length: int, request_options: typing.Optional[RequestOptions] = None
1410
+ ) -> None:
1411
+ """
1412
+ Summarize an agent's conversation history to a target message length.
1413
+
1414
+ This endpoint summarizes the current message history for a given agent,
1415
+ truncating and compressing it down to the specified `max_message_length`.
1416
+
1417
+ Parameters
1418
+ ----------
1419
+ agent_id : str
1420
+
1421
+ max_message_length : int
1422
+ Maximum number of messages to retain after summarization.
1423
+
1424
+ request_options : typing.Optional[RequestOptions]
1425
+ Request-specific configuration.
1426
+
1427
+ Returns
1428
+ -------
1429
+ None
1430
+
1431
+ Examples
1432
+ --------
1433
+ import asyncio
1434
+
1435
+ from letta_client import AsyncLetta
1436
+
1437
+ client = AsyncLetta(
1438
+ project="YOUR_PROJECT",
1439
+ token="YOUR_TOKEN",
1440
+ )
1441
+
1442
+
1443
+ async def main() -> None:
1444
+ await client.agents.messages.summarize(
1445
+ agent_id="agent_id",
1446
+ max_message_length=1,
1447
+ )
1448
+
1449
+
1450
+ asyncio.run(main())
1451
+ """
1452
+ _response = await self._raw_client.summarize(
1453
+ agent_id, max_message_length=max_message_length, request_options=request_options
1364
1454
  )
1365
1455
  return _response.data