letta-client 0.1.233__py3-none-any.whl → 0.1.234__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 (438) hide show
  1. letta_client/__init__.py +2 -0
  2. letta_client/agents/__init__.py +2 -0
  3. letta_client/agents/blocks/__init__.py +2 -0
  4. letta_client/agents/blocks/client.py +72 -313
  5. letta_client/agents/blocks/raw_client.py +654 -0
  6. letta_client/agents/client.py +329 -869
  7. letta_client/agents/context/__init__.py +2 -0
  8. letta_client/agents/context/client.py +31 -66
  9. letta_client/agents/context/raw_client.py +122 -0
  10. letta_client/agents/core_memory/__init__.py +2 -0
  11. letta_client/agents/core_memory/client.py +31 -66
  12. letta_client/agents/core_memory/raw_client.py +124 -0
  13. letta_client/agents/files/__init__.py +2 -0
  14. letta_client/agents/files/client.py +39 -178
  15. letta_client/agents/files/raw_client.py +349 -0
  16. letta_client/agents/folders/__init__.py +2 -0
  17. letta_client/agents/folders/client.py +39 -178
  18. letta_client/agents/folders/raw_client.py +327 -0
  19. letta_client/agents/groups/__init__.py +2 -0
  20. letta_client/agents/groups/client.py +31 -72
  21. letta_client/agents/groups/raw_client.py +142 -0
  22. letta_client/agents/memory_variables/__init__.py +2 -0
  23. letta_client/agents/memory_variables/client.py +31 -65
  24. letta_client/agents/memory_variables/raw_client.py +125 -0
  25. letta_client/agents/memory_variables/types/__init__.py +2 -0
  26. letta_client/agents/memory_variables/types/memory_variables_list_response.py +3 -2
  27. letta_client/agents/messages/__init__.py +2 -0
  28. letta_client/agents/messages/client.py +150 -589
  29. letta_client/agents/messages/raw_client.py +1384 -0
  30. letta_client/agents/messages/types/__init__.py +2 -0
  31. letta_client/agents/messages/types/letta_streaming_response.py +6 -5
  32. letta_client/agents/messages/types/messages_modify_request.py +3 -2
  33. letta_client/agents/messages/types/messages_modify_response.py +5 -4
  34. letta_client/agents/messages/types/messages_preview_raw_payload_request.py +1 -0
  35. letta_client/agents/passages/__init__.py +2 -0
  36. letta_client/agents/passages/client.py +89 -301
  37. letta_client/agents/passages/raw_client.py +678 -0
  38. letta_client/agents/raw_client.py +2068 -0
  39. letta_client/agents/sources/__init__.py +2 -0
  40. letta_client/agents/sources/client.py +39 -178
  41. letta_client/agents/sources/raw_client.py +327 -0
  42. letta_client/agents/templates/__init__.py +2 -0
  43. letta_client/agents/templates/client.py +57 -276
  44. letta_client/agents/templates/raw_client.py +505 -0
  45. letta_client/agents/templates/types/__init__.py +2 -0
  46. letta_client/agents/templates/types/templates_create_response.py +5 -4
  47. letta_client/agents/templates/types/templates_migrate_response.py +3 -2
  48. letta_client/agents/tools/__init__.py +2 -0
  49. letta_client/agents/tools/client.py +40 -179
  50. letta_client/agents/tools/raw_client.py +327 -0
  51. letta_client/agents/types/__init__.py +2 -0
  52. letta_client/agents/types/agents_search_request_search_item.py +4 -3
  53. letta_client/agents/types/agents_search_request_search_item_field.py +4 -3
  54. letta_client/agents/types/agents_search_request_search_item_one.py +4 -3
  55. letta_client/agents/types/agents_search_request_search_item_three.py +3 -2
  56. letta_client/agents/types/agents_search_request_search_item_two.py +3 -2
  57. letta_client/agents/types/agents_search_request_search_item_zero.py +3 -2
  58. letta_client/agents/types/agents_search_response.py +5 -4
  59. letta_client/agents/types/create_agent_request_response_format.py +1 -0
  60. letta_client/agents/types/create_agent_request_tool_rules_item.py +4 -3
  61. letta_client/agents/types/update_agent_response_format.py +1 -0
  62. letta_client/agents/types/update_agent_tool_rules_item.py +4 -3
  63. letta_client/base_client.py +41 -49
  64. letta_client/batches/__init__.py +2 -0
  65. letta_client/batches/client.py +45 -253
  66. letta_client/batches/raw_client.py +457 -0
  67. letta_client/blocks/__init__.py +2 -0
  68. letta_client/blocks/agents/__init__.py +2 -0
  69. letta_client/blocks/agents/client.py +33 -70
  70. letta_client/blocks/agents/raw_client.py +144 -0
  71. letta_client/blocks/client.py +126 -424
  72. letta_client/blocks/raw_client.py +973 -0
  73. letta_client/client_side_access_tokens/__init__.py +2 -0
  74. letta_client/client_side_access_tokens/client.py +45 -216
  75. letta_client/client_side_access_tokens/raw_client.py +435 -0
  76. letta_client/client_side_access_tokens/types/__init__.py +2 -0
  77. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_request_policy_item.py +4 -3
  78. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response.py +6 -5
  79. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy.py +4 -3
  80. letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item.py +4 -3
  81. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response.py +6 -5
  82. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item.py +6 -5
  83. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy.py +4 -3
  84. letta_client/client_side_access_tokens/types/client_side_access_tokens_list_client_side_access_tokens_response_tokens_item_policy_data_item.py +4 -3
  85. letta_client/core/__init__.py +5 -0
  86. letta_client/core/api_error.py +13 -5
  87. letta_client/core/client_wrapper.py +14 -5
  88. letta_client/core/force_multipart.py +16 -0
  89. letta_client/core/http_client.py +70 -26
  90. letta_client/core/http_response.py +55 -0
  91. letta_client/core/jsonable_encoder.py +0 -1
  92. letta_client/core/pydantic_utilities.py +70 -111
  93. letta_client/core/serialization.py +7 -3
  94. letta_client/core/unchecked_base_model.py +40 -4
  95. letta_client/embedding_models/__init__.py +2 -0
  96. letta_client/embedding_models/client.py +31 -65
  97. letta_client/embedding_models/raw_client.py +117 -0
  98. letta_client/errors/__init__.py +2 -0
  99. letta_client/errors/bad_request_error.py +4 -3
  100. letta_client/errors/conflict_error.py +4 -2
  101. letta_client/errors/internal_server_error.py +4 -3
  102. letta_client/errors/not_found_error.py +4 -3
  103. letta_client/errors/payment_required_error.py +4 -2
  104. letta_client/errors/unprocessable_entity_error.py +4 -2
  105. letta_client/folders/__init__.py +2 -0
  106. letta_client/folders/client.py +100 -564
  107. letta_client/folders/files/__init__.py +2 -0
  108. letta_client/folders/files/client.py +44 -189
  109. letta_client/folders/files/raw_client.py +391 -0
  110. letta_client/folders/passages/__init__.py +2 -0
  111. letta_client/folders/passages/client.py +33 -74
  112. letta_client/folders/passages/raw_client.py +162 -0
  113. letta_client/folders/raw_client.py +1084 -0
  114. letta_client/groups/__init__.py +2 -0
  115. letta_client/groups/client.py +87 -406
  116. letta_client/groups/messages/__init__.py +2 -0
  117. letta_client/groups/messages/client.py +110 -371
  118. letta_client/groups/messages/raw_client.py +881 -0
  119. letta_client/groups/messages/types/__init__.py +2 -0
  120. letta_client/groups/messages/types/letta_streaming_response.py +5 -4
  121. letta_client/groups/messages/types/messages_modify_request.py +3 -2
  122. letta_client/groups/messages/types/messages_modify_response.py +5 -4
  123. letta_client/groups/raw_client.py +807 -0
  124. letta_client/groups/types/__init__.py +2 -0
  125. letta_client/groups/types/group_create_manager_config.py +1 -0
  126. letta_client/groups/types/group_update_manager_config.py +1 -0
  127. letta_client/health/__init__.py +2 -0
  128. letta_client/health/client.py +31 -43
  129. letta_client/health/raw_client.py +85 -0
  130. letta_client/identities/__init__.py +2 -0
  131. letta_client/identities/client.py +115 -498
  132. letta_client/identities/properties/__init__.py +2 -0
  133. letta_client/identities/properties/client.py +32 -76
  134. letta_client/identities/properties/raw_client.py +152 -0
  135. letta_client/identities/raw_client.py +1010 -0
  136. letta_client/jobs/__init__.py +2 -0
  137. letta_client/jobs/client.py +67 -310
  138. letta_client/jobs/raw_client.py +624 -0
  139. letta_client/messages/__init__.py +2 -0
  140. letta_client/messages/client.py +41 -74
  141. letta_client/messages/raw_client.py +186 -0
  142. letta_client/models/__init__.py +2 -0
  143. letta_client/models/client.py +39 -73
  144. letta_client/models/raw_client.py +151 -0
  145. letta_client/projects/__init__.py +2 -0
  146. letta_client/projects/client.py +31 -53
  147. letta_client/projects/raw_client.py +125 -0
  148. letta_client/projects/types/__init__.py +2 -0
  149. letta_client/projects/types/projects_list_response.py +5 -4
  150. letta_client/projects/types/projects_list_response_projects_item.py +3 -2
  151. letta_client/providers/__init__.py +2 -0
  152. letta_client/providers/client.py +62 -335
  153. letta_client/providers/raw_client.py +664 -0
  154. letta_client/runs/__init__.py +2 -0
  155. letta_client/runs/client.py +56 -258
  156. letta_client/runs/messages/__init__.py +2 -0
  157. letta_client/runs/messages/client.py +34 -79
  158. letta_client/runs/messages/raw_client.py +209 -0
  159. letta_client/runs/raw_client.py +440 -0
  160. letta_client/runs/steps/__init__.py +2 -0
  161. letta_client/runs/steps/client.py +33 -76
  162. letta_client/runs/steps/raw_client.py +192 -0
  163. letta_client/runs/usage/__init__.py +2 -0
  164. letta_client/runs/usage/client.py +31 -66
  165. letta_client/runs/usage/raw_client.py +122 -0
  166. letta_client/sources/__init__.py +2 -0
  167. letta_client/sources/client.py +107 -625
  168. letta_client/sources/files/__init__.py +2 -0
  169. letta_client/sources/files/client.py +44 -189
  170. letta_client/sources/files/raw_client.py +391 -0
  171. letta_client/sources/passages/__init__.py +2 -0
  172. letta_client/sources/passages/client.py +33 -74
  173. letta_client/sources/passages/raw_client.py +162 -0
  174. letta_client/sources/raw_client.py +1209 -0
  175. letta_client/steps/__init__.py +2 -0
  176. letta_client/steps/client.py +65 -153
  177. letta_client/steps/feedback/__init__.py +2 -0
  178. letta_client/steps/feedback/client.py +32 -73
  179. letta_client/steps/feedback/raw_client.py +141 -0
  180. letta_client/steps/raw_client.py +355 -0
  181. letta_client/steps/types/__init__.py +2 -0
  182. letta_client/tags/__init__.py +2 -0
  183. letta_client/tags/client.py +33 -73
  184. letta_client/tags/raw_client.py +148 -0
  185. letta_client/telemetry/__init__.py +2 -0
  186. letta_client/telemetry/client.py +31 -66
  187. letta_client/telemetry/raw_client.py +118 -0
  188. letta_client/templates/__init__.py +2 -0
  189. letta_client/templates/agents/__init__.py +2 -0
  190. letta_client/templates/agents/client.py +48 -96
  191. letta_client/templates/agents/raw_client.py +227 -0
  192. letta_client/templates/agents/types/__init__.py +2 -0
  193. letta_client/templates/agents/types/agents_create_request_initial_message_sequence_item.py +4 -3
  194. letta_client/templates/agents/types/agents_create_response.py +4 -3
  195. letta_client/templates/client.py +36 -57
  196. letta_client/templates/raw_client.py +133 -0
  197. letta_client/templates/types/__init__.py +2 -0
  198. letta_client/templates/types/templates_list_response.py +5 -4
  199. letta_client/templates/types/templates_list_response_templates_item.py +3 -2
  200. letta_client/tools/__init__.py +2 -0
  201. letta_client/tools/client.py +195 -1322
  202. letta_client/tools/raw_client.py +2565 -0
  203. letta_client/tools/types/__init__.py +2 -0
  204. letta_client/tools/types/add_mcp_server_request.py +2 -1
  205. letta_client/tools/types/add_mcp_server_response_item.py +2 -1
  206. letta_client/tools/types/connect_mcp_server_request.py +2 -1
  207. letta_client/tools/types/delete_mcp_server_response_item.py +2 -1
  208. letta_client/tools/types/list_mcp_servers_response_value.py +1 -0
  209. letta_client/tools/types/streaming_response.py +5 -4
  210. letta_client/tools/types/test_mcp_server_request.py +2 -1
  211. letta_client/tools/types/update_mcp_server_request.py +2 -1
  212. letta_client/tools/types/update_mcp_server_response.py +2 -1
  213. letta_client/types/__init__.py +2 -0
  214. letta_client/types/action_model.py +6 -5
  215. letta_client/types/action_parameters_model.py +3 -2
  216. letta_client/types/action_response_model.py +3 -2
  217. letta_client/types/agent_environment_variable.py +3 -2
  218. letta_client/types/agent_schema.py +7 -6
  219. letta_client/types/agent_schema_tool_rules_item.py +2 -1
  220. letta_client/types/agent_state.py +9 -8
  221. letta_client/types/agent_state_response_format.py +1 -0
  222. letta_client/types/agent_state_tool_rules_item.py +4 -3
  223. letta_client/types/app_auth_scheme.py +4 -3
  224. letta_client/types/app_model.py +5 -4
  225. letta_client/types/assistant_message.py +3 -2
  226. letta_client/types/assistant_message_content.py +1 -0
  227. letta_client/types/audio.py +3 -2
  228. letta_client/types/auth_request.py +2 -1
  229. letta_client/types/auth_response.py +5 -4
  230. letta_client/types/auth_scheme_field.py +3 -2
  231. letta_client/types/bad_request_error_body.py +3 -2
  232. letta_client/types/base_64_image.py +2 -1
  233. letta_client/types/base_tool_rule_schema.py +3 -2
  234. letta_client/types/batch_job.py +4 -3
  235. letta_client/types/block.py +3 -2
  236. letta_client/types/block_update.py +2 -1
  237. letta_client/types/chat_completion_assistant_message_param.py +5 -4
  238. letta_client/types/chat_completion_assistant_message_param_content.py +1 -0
  239. letta_client/types/chat_completion_assistant_message_param_content_item.py +2 -1
  240. letta_client/types/chat_completion_audio_param.py +4 -3
  241. letta_client/types/chat_completion_content_part_image_param.py +4 -3
  242. letta_client/types/chat_completion_content_part_input_audio_param.py +4 -3
  243. letta_client/types/chat_completion_content_part_refusal_param.py +3 -2
  244. letta_client/types/chat_completion_content_part_text_param.py +3 -2
  245. letta_client/types/chat_completion_developer_message_param.py +4 -3
  246. letta_client/types/chat_completion_developer_message_param_content.py +1 -0
  247. letta_client/types/chat_completion_function_call_option_param.py +3 -2
  248. letta_client/types/chat_completion_function_message_param.py +3 -2
  249. letta_client/types/chat_completion_message_tool_call.py +4 -3
  250. letta_client/types/chat_completion_message_tool_call_param.py +4 -3
  251. letta_client/types/chat_completion_named_tool_choice_param.py +4 -3
  252. letta_client/types/chat_completion_prediction_content_param.py +4 -3
  253. letta_client/types/chat_completion_prediction_content_param_content.py +1 -0
  254. letta_client/types/chat_completion_stream_options_param.py +3 -2
  255. letta_client/types/chat_completion_system_message_param.py +4 -3
  256. letta_client/types/chat_completion_system_message_param_content.py +1 -0
  257. letta_client/types/chat_completion_tool_message_param.py +4 -3
  258. letta_client/types/chat_completion_tool_message_param_content.py +1 -0
  259. letta_client/types/chat_completion_tool_param.py +4 -3
  260. letta_client/types/chat_completion_user_message_param.py +4 -3
  261. letta_client/types/chat_completion_user_message_param_content.py +1 -0
  262. letta_client/types/chat_completion_user_message_param_content_item.py +2 -1
  263. letta_client/types/child_tool_rule.py +3 -2
  264. letta_client/types/child_tool_rule_schema.py +3 -2
  265. letta_client/types/code_input.py +3 -2
  266. letta_client/types/completion_create_params_non_streaming.py +10 -9
  267. letta_client/types/completion_create_params_non_streaming_function_call.py +1 -0
  268. letta_client/types/completion_create_params_non_streaming_messages_item.py +4 -3
  269. letta_client/types/completion_create_params_non_streaming_response_format.py +3 -2
  270. letta_client/types/completion_create_params_non_streaming_tool_choice.py +1 -0
  271. letta_client/types/completion_create_params_streaming.py +10 -9
  272. letta_client/types/completion_create_params_streaming_function_call.py +1 -0
  273. letta_client/types/completion_create_params_streaming_messages_item.py +4 -3
  274. letta_client/types/completion_create_params_streaming_response_format.py +3 -2
  275. letta_client/types/completion_create_params_streaming_tool_choice.py +1 -0
  276. letta_client/types/conditional_tool_rule.py +3 -2
  277. letta_client/types/conditional_tool_rule_schema.py +3 -2
  278. letta_client/types/conflict_error_body.py +3 -2
  279. letta_client/types/context_window_overview.py +4 -3
  280. letta_client/types/continue_tool_rule.py +3 -2
  281. letta_client/types/core_memory_block_schema.py +4 -3
  282. letta_client/types/create_block.py +3 -2
  283. letta_client/types/dynamic_manager.py +2 -1
  284. letta_client/types/dynamic_manager_update.py +2 -1
  285. letta_client/types/e_2_b_sandbox_config.py +2 -1
  286. letta_client/types/embedding_config.py +4 -3
  287. letta_client/types/file.py +4 -3
  288. letta_client/types/file_block.py +4 -3
  289. letta_client/types/file_file.py +3 -2
  290. letta_client/types/file_metadata.py +5 -4
  291. letta_client/types/file_stats.py +3 -2
  292. letta_client/types/folder.py +5 -4
  293. letta_client/types/function_call.py +3 -2
  294. letta_client/types/function_definition_input.py +3 -2
  295. letta_client/types/function_definition_output.py +3 -2
  296. letta_client/types/function_output.py +3 -2
  297. letta_client/types/function_tool.py +4 -3
  298. letta_client/types/generate_tool_input.py +3 -2
  299. letta_client/types/generate_tool_output.py +4 -3
  300. letta_client/types/group.py +4 -3
  301. letta_client/types/health.py +3 -2
  302. letta_client/types/hidden_reasoning_message.py +4 -3
  303. letta_client/types/http_validation_error.py +4 -3
  304. letta_client/types/identity.py +4 -3
  305. letta_client/types/identity_property.py +5 -4
  306. letta_client/types/image_content.py +3 -2
  307. letta_client/types/image_content_source.py +1 -0
  308. letta_client/types/image_url.py +4 -3
  309. letta_client/types/init_tool_rule.py +3 -2
  310. letta_client/types/input_audio.py +4 -3
  311. letta_client/types/internal_server_error_body.py +3 -2
  312. letta_client/types/job.py +4 -3
  313. letta_client/types/json_object_response_format.py +3 -2
  314. letta_client/types/json_schema.py +4 -3
  315. letta_client/types/json_schema_response_format.py +2 -1
  316. letta_client/types/letta_batch_messages.py +4 -3
  317. letta_client/types/letta_batch_request.py +4 -3
  318. letta_client/types/letta_image.py +2 -1
  319. letta_client/types/letta_message_content_union.py +4 -3
  320. letta_client/types/letta_message_union.py +5 -4
  321. letta_client/types/letta_ping.py +2 -1
  322. letta_client/types/letta_request.py +4 -3
  323. letta_client/types/letta_request_config.py +3 -2
  324. letta_client/types/letta_response.py +4 -3
  325. letta_client/types/letta_stop_reason.py +3 -2
  326. letta_client/types/letta_streaming_request.py +9 -3
  327. letta_client/types/letta_usage_statistics.py +3 -2
  328. letta_client/types/letta_user_message_content_union.py +2 -1
  329. letta_client/types/llm_config.py +6 -5
  330. letta_client/types/local_sandbox_config.py +3 -2
  331. letta_client/types/max_count_per_step_tool_rule.py +3 -2
  332. letta_client/types/max_count_per_step_tool_rule_schema.py +3 -2
  333. letta_client/types/mcp_tool.py +4 -3
  334. letta_client/types/memory.py +4 -3
  335. letta_client/types/message.py +6 -5
  336. letta_client/types/message_content_item.py +1 -0
  337. letta_client/types/message_create.py +5 -4
  338. letta_client/types/message_create_content.py +1 -0
  339. letta_client/types/message_schema.py +4 -3
  340. letta_client/types/modal_sandbox_config.py +2 -1
  341. letta_client/types/not_found_error_body.py +3 -2
  342. letta_client/types/omitted_reasoning_content.py +3 -2
  343. letta_client/types/openai_types_chat_chat_completion_message_tool_call_param_function.py +3 -2
  344. letta_client/types/openai_types_chat_chat_completion_named_tool_choice_param_function.py +3 -2
  345. letta_client/types/openai_types_chat_completion_create_params_function.py +3 -2
  346. letta_client/types/organization.py +3 -2
  347. letta_client/types/organization_create.py +2 -1
  348. letta_client/types/organization_sources_stats.py +3 -2
  349. letta_client/types/organization_update.py +2 -1
  350. letta_client/types/parameter_properties.py +3 -2
  351. letta_client/types/parameters_schema.py +4 -3
  352. letta_client/types/parent_tool_rule.py +3 -2
  353. letta_client/types/passage.py +4 -3
  354. letta_client/types/payment_required_error_body.py +3 -2
  355. letta_client/types/pip_requirement.py +3 -2
  356. letta_client/types/provider.py +5 -4
  357. letta_client/types/provider_check.py +4 -3
  358. letta_client/types/provider_trace.py +3 -2
  359. letta_client/types/reasoning_content.py +2 -1
  360. letta_client/types/reasoning_message.py +4 -3
  361. letta_client/types/redacted_reasoning_content.py +2 -1
  362. letta_client/types/required_before_exit_tool_rule.py +3 -2
  363. letta_client/types/response_format_json_object.py +3 -2
  364. letta_client/types/response_format_json_schema.py +4 -3
  365. letta_client/types/response_format_text.py +3 -2
  366. letta_client/types/round_robin_manager.py +2 -1
  367. letta_client/types/round_robin_manager_update.py +2 -1
  368. letta_client/types/run.py +4 -3
  369. letta_client/types/sandbox_config.py +4 -3
  370. letta_client/types/sandbox_config_create.py +4 -3
  371. letta_client/types/sandbox_config_create_config.py +2 -1
  372. letta_client/types/sandbox_config_update.py +3 -2
  373. letta_client/types/sandbox_config_update_config.py +2 -1
  374. letta_client/types/sandbox_environment_variable.py +3 -2
  375. letta_client/types/sandbox_environment_variable_create.py +3 -2
  376. letta_client/types/sandbox_environment_variable_update.py +2 -1
  377. letta_client/types/sleeptime_manager.py +2 -1
  378. letta_client/types/sleeptime_manager_update.py +2 -1
  379. letta_client/types/source.py +5 -4
  380. letta_client/types/source_create.py +4 -3
  381. letta_client/types/source_stats.py +4 -3
  382. letta_client/types/source_update.py +3 -2
  383. letta_client/types/sse_server_config.py +4 -3
  384. letta_client/types/stdio_server_config.py +4 -3
  385. letta_client/types/step.py +5 -4
  386. letta_client/types/streamable_http_server_config.py +4 -3
  387. letta_client/types/supervisor_manager.py +2 -1
  388. letta_client/types/supervisor_manager_update.py +2 -1
  389. letta_client/types/system_message.py +2 -1
  390. letta_client/types/tag_schema.py +3 -2
  391. letta_client/types/terminal_tool_rule.py +3 -2
  392. letta_client/types/text_content.py +2 -1
  393. letta_client/types/text_response_format.py +3 -2
  394. letta_client/types/tool.py +5 -4
  395. letta_client/types/tool_annotations.py +4 -3
  396. letta_client/types/tool_call.py +3 -2
  397. letta_client/types/tool_call_content.py +2 -1
  398. letta_client/types/tool_call_delta.py +3 -2
  399. letta_client/types/tool_call_message.py +4 -3
  400. letta_client/types/tool_call_message_tool_call.py +1 -0
  401. letta_client/types/tool_create.py +3 -2
  402. letta_client/types/tool_env_var_schema.py +3 -2
  403. letta_client/types/tool_json_schema.py +4 -3
  404. letta_client/types/tool_return.py +4 -3
  405. letta_client/types/tool_return_content.py +2 -1
  406. letta_client/types/tool_return_message.py +4 -3
  407. letta_client/types/tool_schema.py +5 -4
  408. letta_client/types/update_assistant_message.py +3 -2
  409. letta_client/types/update_assistant_message_content.py +1 -0
  410. letta_client/types/update_reasoning_message.py +3 -2
  411. letta_client/types/update_ssemcp_server.py +2 -1
  412. letta_client/types/update_stdio_mcp_server.py +3 -2
  413. letta_client/types/update_streamable_httpmcp_server.py +2 -1
  414. letta_client/types/update_system_message.py +2 -1
  415. letta_client/types/update_user_message.py +3 -2
  416. letta_client/types/update_user_message_content.py +1 -0
  417. letta_client/types/url_image.py +2 -1
  418. letta_client/types/usage_statistics.py +5 -4
  419. letta_client/types/usage_statistics_completion_token_details.py +3 -2
  420. letta_client/types/usage_statistics_prompt_token_details.py +3 -2
  421. letta_client/types/user.py +3 -2
  422. letta_client/types/user_create.py +3 -2
  423. letta_client/types/user_message.py +3 -2
  424. letta_client/types/user_message_content.py +1 -0
  425. letta_client/types/user_update.py +3 -2
  426. letta_client/types/validation_error.py +4 -3
  427. letta_client/types/voice_sleeptime_manager.py +2 -1
  428. letta_client/types/voice_sleeptime_manager_update.py +2 -1
  429. letta_client/types/web_search_options.py +4 -3
  430. letta_client/types/web_search_options_user_location.py +4 -3
  431. letta_client/types/web_search_options_user_location_approximate.py +3 -2
  432. letta_client/voice/__init__.py +2 -0
  433. letta_client/voice/client.py +33 -74
  434. letta_client/voice/raw_client.py +154 -0
  435. {letta_client-0.1.233.dist-info → letta_client-0.1.234.dist-info}/METADATA +24 -3
  436. letta_client-0.1.234.dist-info/RECORD +503 -0
  437. letta_client-0.1.233.dist-info/RECORD +0 -455
  438. {letta_client-0.1.233.dist-info → letta_client-0.1.234.dist-info}/WHEEL +0 -0
@@ -1,28 +1,20 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
3
  import typing
4
- from ...core.client_wrapper import SyncClientWrapper
4
+
5
+ from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
5
6
  from ...core.request_options import RequestOptions
7
+ from ...types.agent_state import AgentState
6
8
  from ...types.letta_message_union import LettaMessageUnion
7
- from ...core.jsonable_encoder import jsonable_encoder
8
- from ...core.unchecked_base_model import construct_type
9
- from ...errors.unprocessable_entity_error import UnprocessableEntityError
10
- from ...types.http_validation_error import HttpValidationError
11
- from json.decoder import JSONDecodeError
12
- from ...core.api_error import ApiError
9
+ from ...types.letta_response import LettaResponse
13
10
  from ...types.message_create import MessageCreate
14
11
  from ...types.message_type import MessageType
15
- from ...types.letta_response import LettaResponse
16
- from ...core.serialization import convert_and_respect_annotation_metadata
12
+ from ...types.run import Run
13
+ from .raw_client import AsyncRawMessagesClient, RawMessagesClient
14
+ from .types.letta_streaming_response import LettaStreamingResponse
17
15
  from .types.messages_modify_request import MessagesModifyRequest
18
16
  from .types.messages_modify_response import MessagesModifyResponse
19
- from .types.letta_streaming_response import LettaStreamingResponse
20
- import httpx_sse
21
- import json
22
- from ...types.run import Run
23
- from ...types.agent_state import AgentState
24
17
  from .types.messages_preview_raw_payload_request import MessagesPreviewRawPayloadRequest
25
- from ...core.client_wrapper import AsyncClientWrapper
26
18
 
27
19
  # this is used as the default value for optional parameters
28
20
  OMIT = typing.cast(typing.Any, ...)
@@ -30,7 +22,18 @@ OMIT = typing.cast(typing.Any, ...)
30
22
 
31
23
  class MessagesClient:
32
24
  def __init__(self, *, client_wrapper: SyncClientWrapper):
33
- self._client_wrapper = client_wrapper
25
+ self._raw_client = RawMessagesClient(client_wrapper=client_wrapper)
26
+
27
+ @property
28
+ def with_raw_response(self) -> RawMessagesClient:
29
+ """
30
+ Retrieves a raw implementation of this client that returns raw responses.
31
+
32
+ Returns
33
+ -------
34
+ RawMessagesClient
35
+ """
36
+ return self._raw_client
34
37
 
35
38
  def list(
36
39
  self,
@@ -97,44 +100,19 @@ class MessagesClient:
97
100
  agent_id="agent_id",
98
101
  )
99
102
  """
100
- _response = self._client_wrapper.httpx_client.request(
101
- f"v1/agents/{jsonable_encoder(agent_id)}/messages",
102
- method="GET",
103
- params={
104
- "after": after,
105
- "before": before,
106
- "limit": limit,
107
- "group_id": group_id,
108
- "use_assistant_message": use_assistant_message,
109
- "assistant_message_tool_name": assistant_message_tool_name,
110
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
111
- "include_err": include_err,
112
- },
103
+ _response = self._raw_client.list(
104
+ agent_id,
105
+ after=after,
106
+ before=before,
107
+ limit=limit,
108
+ group_id=group_id,
109
+ use_assistant_message=use_assistant_message,
110
+ assistant_message_tool_name=assistant_message_tool_name,
111
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
112
+ include_err=include_err,
113
113
  request_options=request_options,
114
114
  )
115
- try:
116
- if 200 <= _response.status_code < 300:
117
- return typing.cast(
118
- typing.List[LettaMessageUnion],
119
- construct_type(
120
- type_=typing.List[LettaMessageUnion], # type: ignore
121
- object_=_response.json(),
122
- ),
123
- )
124
- if _response.status_code == 422:
125
- raise UnprocessableEntityError(
126
- typing.cast(
127
- HttpValidationError,
128
- construct_type(
129
- type_=HttpValidationError, # type: ignore
130
- object_=_response.json(),
131
- ),
132
- )
133
- )
134
- _response_json = _response.json()
135
- except JSONDecodeError:
136
- raise ApiError(status_code=_response.status_code, body=_response.text)
137
- raise ApiError(status_code=_response.status_code, body=_response_json)
115
+ return _response.data
138
116
 
139
117
  def create(
140
118
  self,
@@ -208,46 +186,18 @@ class MessagesClient:
208
186
  ],
209
187
  )
210
188
  """
211
- _response = self._client_wrapper.httpx_client.request(
212
- f"v1/agents/{jsonable_encoder(agent_id)}/messages",
213
- method="POST",
214
- json={
215
- "messages": convert_and_respect_annotation_metadata(
216
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
217
- ),
218
- "max_steps": max_steps,
219
- "use_assistant_message": use_assistant_message,
220
- "assistant_message_tool_name": assistant_message_tool_name,
221
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
222
- "include_return_message_types": include_return_message_types,
223
- "enable_thinking": enable_thinking,
224
- },
189
+ _response = self._raw_client.create(
190
+ agent_id,
191
+ messages=messages,
192
+ max_steps=max_steps,
193
+ use_assistant_message=use_assistant_message,
194
+ assistant_message_tool_name=assistant_message_tool_name,
195
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
196
+ include_return_message_types=include_return_message_types,
197
+ enable_thinking=enable_thinking,
225
198
  request_options=request_options,
226
- omit=OMIT,
227
199
  )
228
- try:
229
- if 200 <= _response.status_code < 300:
230
- return typing.cast(
231
- LettaResponse,
232
- construct_type(
233
- type_=LettaResponse, # type: ignore
234
- object_=_response.json(),
235
- ),
236
- )
237
- if _response.status_code == 422:
238
- raise UnprocessableEntityError(
239
- typing.cast(
240
- HttpValidationError,
241
- construct_type(
242
- type_=HttpValidationError, # type: ignore
243
- object_=_response.json(),
244
- ),
245
- )
246
- )
247
- _response_json = _response.json()
248
- except JSONDecodeError:
249
- raise ApiError(status_code=_response.status_code, body=_response.text)
250
- raise ApiError(status_code=_response.status_code, body=_response_json)
200
+ return _response.data
251
201
 
252
202
  def modify(
253
203
  self,
@@ -292,38 +242,8 @@ class MessagesClient:
292
242
  ),
293
243
  )
294
244
  """
295
- _response = self._client_wrapper.httpx_client.request(
296
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/{jsonable_encoder(message_id)}",
297
- method="PATCH",
298
- json=convert_and_respect_annotation_metadata(
299
- object_=request, annotation=MessagesModifyRequest, direction="write"
300
- ),
301
- request_options=request_options,
302
- omit=OMIT,
303
- )
304
- try:
305
- if 200 <= _response.status_code < 300:
306
- return typing.cast(
307
- MessagesModifyResponse,
308
- construct_type(
309
- type_=MessagesModifyResponse, # type: ignore
310
- object_=_response.json(),
311
- ),
312
- )
313
- if _response.status_code == 422:
314
- raise UnprocessableEntityError(
315
- typing.cast(
316
- HttpValidationError,
317
- construct_type(
318
- type_=HttpValidationError, # type: ignore
319
- object_=_response.json(),
320
- ),
321
- )
322
- )
323
- _response_json = _response.json()
324
- except JSONDecodeError:
325
- raise ApiError(status_code=_response.status_code, body=_response.text)
326
- raise ApiError(status_code=_response.status_code, body=_response_json)
245
+ _response = self._raw_client.modify(agent_id, message_id, request=request, request_options=request_options)
246
+ return _response.data
327
247
 
328
248
  def create_stream(
329
249
  self,
@@ -337,6 +257,7 @@ class MessagesClient:
337
257
  include_return_message_types: typing.Optional[typing.Sequence[MessageType]] = OMIT,
338
258
  enable_thinking: typing.Optional[str] = OMIT,
339
259
  stream_tokens: typing.Optional[bool] = OMIT,
260
+ include_pings: typing.Optional[bool] = OMIT,
340
261
  request_options: typing.Optional[RequestOptions] = None,
341
262
  ) -> typing.Iterator[LettaStreamingResponse]:
342
263
  """
@@ -372,6 +293,9 @@ class MessagesClient:
372
293
  stream_tokens : typing.Optional[bool]
373
294
  Flag to determine if individual tokens should be streamed. Set to True for token streaming (requires stream_steps = True).
374
295
 
296
+ include_pings : typing.Optional[bool]
297
+ Whether to include periodic keepalive ping messages in the stream to prevent connection timeouts.
298
+
375
299
  request_options : typing.Optional[RequestOptions]
376
300
  Request-specific configuration.
377
301
 
@@ -404,54 +328,20 @@ class MessagesClient:
404
328
  for chunk in response:
405
329
  yield chunk
406
330
  """
407
- with self._client_wrapper.httpx_client.stream(
408
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/stream",
409
- method="POST",
410
- json={
411
- "messages": convert_and_respect_annotation_metadata(
412
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
413
- ),
414
- "max_steps": max_steps,
415
- "use_assistant_message": use_assistant_message,
416
- "assistant_message_tool_name": assistant_message_tool_name,
417
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
418
- "include_return_message_types": include_return_message_types,
419
- "enable_thinking": enable_thinking,
420
- "stream_tokens": stream_tokens,
421
- },
331
+ with self._raw_client.create_stream(
332
+ agent_id,
333
+ messages=messages,
334
+ max_steps=max_steps,
335
+ use_assistant_message=use_assistant_message,
336
+ assistant_message_tool_name=assistant_message_tool_name,
337
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
338
+ include_return_message_types=include_return_message_types,
339
+ enable_thinking=enable_thinking,
340
+ stream_tokens=stream_tokens,
341
+ include_pings=include_pings,
422
342
  request_options=request_options,
423
- omit=OMIT,
424
- ) as _response:
425
- try:
426
- if 200 <= _response.status_code < 300:
427
- _event_source = httpx_sse.EventSource(_response)
428
- for _sse in _event_source.iter_sse():
429
- try:
430
- yield typing.cast(
431
- LettaStreamingResponse,
432
- construct_type(
433
- type_=LettaStreamingResponse, # type: ignore
434
- object_=json.loads(_sse.data),
435
- ),
436
- )
437
- except:
438
- pass
439
- return
440
- _response.read()
441
- if _response.status_code == 422:
442
- raise UnprocessableEntityError(
443
- typing.cast(
444
- HttpValidationError,
445
- construct_type(
446
- type_=HttpValidationError, # type: ignore
447
- object_=_response.json(),
448
- ),
449
- )
450
- )
451
- _response_json = _response.json()
452
- except JSONDecodeError:
453
- raise ApiError(status_code=_response.status_code, body=_response.text)
454
- raise ApiError(status_code=_response.status_code, body=_response_json)
343
+ ) as r:
344
+ yield from r.data
455
345
 
456
346
  def cancel(
457
347
  self,
@@ -491,36 +381,8 @@ class MessagesClient:
491
381
  agent_id="agent_id",
492
382
  )
493
383
  """
494
- _response = self._client_wrapper.httpx_client.request(
495
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/cancel",
496
- method="POST",
497
- json=request,
498
- request_options=request_options,
499
- omit=OMIT,
500
- )
501
- try:
502
- if 200 <= _response.status_code < 300:
503
- return typing.cast(
504
- typing.Dict[str, typing.Optional[typing.Any]],
505
- construct_type(
506
- type_=typing.Dict[str, typing.Optional[typing.Any]], # type: ignore
507
- object_=_response.json(),
508
- ),
509
- )
510
- if _response.status_code == 422:
511
- raise UnprocessableEntityError(
512
- typing.cast(
513
- HttpValidationError,
514
- construct_type(
515
- type_=HttpValidationError, # type: ignore
516
- object_=_response.json(),
517
- ),
518
- )
519
- )
520
- _response_json = _response.json()
521
- except JSONDecodeError:
522
- raise ApiError(status_code=_response.status_code, body=_response.text)
523
- raise ApiError(status_code=_response.status_code, body=_response_json)
384
+ _response = self._raw_client.cancel(agent_id, request=request, request_options=request_options)
385
+ return _response.data
524
386
 
525
387
  def create_async(
526
388
  self,
@@ -601,50 +463,19 @@ class MessagesClient:
601
463
  ],
602
464
  )
603
465
  """
604
- _response = self._client_wrapper.httpx_client.request(
605
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/async",
606
- method="POST",
607
- json={
608
- "messages": convert_and_respect_annotation_metadata(
609
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
610
- ),
611
- "max_steps": max_steps,
612
- "use_assistant_message": use_assistant_message,
613
- "assistant_message_tool_name": assistant_message_tool_name,
614
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
615
- "include_return_message_types": include_return_message_types,
616
- "enable_thinking": enable_thinking,
617
- "callback_url": callback_url,
618
- },
619
- headers={
620
- "content-type": "application/json",
621
- },
466
+ _response = self._raw_client.create_async(
467
+ agent_id,
468
+ messages=messages,
469
+ max_steps=max_steps,
470
+ use_assistant_message=use_assistant_message,
471
+ assistant_message_tool_name=assistant_message_tool_name,
472
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
473
+ include_return_message_types=include_return_message_types,
474
+ enable_thinking=enable_thinking,
475
+ callback_url=callback_url,
622
476
  request_options=request_options,
623
- omit=OMIT,
624
477
  )
625
- try:
626
- if 200 <= _response.status_code < 300:
627
- return typing.cast(
628
- Run,
629
- construct_type(
630
- type_=Run, # type: ignore
631
- object_=_response.json(),
632
- ),
633
- )
634
- if _response.status_code == 422:
635
- raise UnprocessableEntityError(
636
- typing.cast(
637
- HttpValidationError,
638
- construct_type(
639
- type_=HttpValidationError, # type: ignore
640
- object_=_response.json(),
641
- ),
642
- )
643
- )
644
- _response_json = _response.json()
645
- except JSONDecodeError:
646
- raise ApiError(status_code=_response.status_code, body=_response.text)
647
- raise ApiError(status_code=_response.status_code, body=_response_json)
478
+ return _response.data
648
479
 
649
480
  def reset(
650
481
  self,
@@ -683,37 +514,10 @@ class MessagesClient:
683
514
  agent_id="agent_id",
684
515
  )
685
516
  """
686
- _response = self._client_wrapper.httpx_client.request(
687
- f"v1/agents/{jsonable_encoder(agent_id)}/reset-messages",
688
- method="PATCH",
689
- params={
690
- "add_default_initial_messages": add_default_initial_messages,
691
- },
692
- request_options=request_options,
517
+ _response = self._raw_client.reset(
518
+ agent_id, add_default_initial_messages=add_default_initial_messages, request_options=request_options
693
519
  )
694
- try:
695
- if 200 <= _response.status_code < 300:
696
- return typing.cast(
697
- AgentState,
698
- construct_type(
699
- type_=AgentState, # type: ignore
700
- object_=_response.json(),
701
- ),
702
- )
703
- if _response.status_code == 422:
704
- raise UnprocessableEntityError(
705
- typing.cast(
706
- HttpValidationError,
707
- construct_type(
708
- type_=HttpValidationError, # type: ignore
709
- object_=_response.json(),
710
- ),
711
- )
712
- )
713
- _response_json = _response.json()
714
- except JSONDecodeError:
715
- raise ApiError(status_code=_response.status_code, body=_response.text)
716
- raise ApiError(status_code=_response.status_code, body=_response_json)
520
+ return _response.data
717
521
 
718
522
  def preview_raw_payload(
719
523
  self,
@@ -767,43 +571,24 @@ class MessagesClient:
767
571
  ),
768
572
  )
769
573
  """
770
- _response = self._client_wrapper.httpx_client.request(
771
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/preview-raw-payload",
772
- method="POST",
773
- json=convert_and_respect_annotation_metadata(
774
- object_=request, annotation=MessagesPreviewRawPayloadRequest, direction="write"
775
- ),
776
- request_options=request_options,
777
- omit=OMIT,
778
- )
779
- try:
780
- if 200 <= _response.status_code < 300:
781
- return typing.cast(
782
- typing.Dict[str, typing.Optional[typing.Any]],
783
- construct_type(
784
- type_=typing.Dict[str, typing.Optional[typing.Any]], # type: ignore
785
- object_=_response.json(),
786
- ),
787
- )
788
- if _response.status_code == 422:
789
- raise UnprocessableEntityError(
790
- typing.cast(
791
- HttpValidationError,
792
- construct_type(
793
- type_=HttpValidationError, # type: ignore
794
- object_=_response.json(),
795
- ),
796
- )
797
- )
798
- _response_json = _response.json()
799
- except JSONDecodeError:
800
- raise ApiError(status_code=_response.status_code, body=_response.text)
801
- raise ApiError(status_code=_response.status_code, body=_response_json)
574
+ _response = self._raw_client.preview_raw_payload(agent_id, request=request, request_options=request_options)
575
+ return _response.data
802
576
 
803
577
 
804
578
  class AsyncMessagesClient:
805
579
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
806
- self._client_wrapper = client_wrapper
580
+ self._raw_client = AsyncRawMessagesClient(client_wrapper=client_wrapper)
581
+
582
+ @property
583
+ def with_raw_response(self) -> AsyncRawMessagesClient:
584
+ """
585
+ Retrieves a raw implementation of this client that returns raw responses.
586
+
587
+ Returns
588
+ -------
589
+ AsyncRawMessagesClient
590
+ """
591
+ return self._raw_client
807
592
 
808
593
  async def list(
809
594
  self,
@@ -878,44 +663,19 @@ class AsyncMessagesClient:
878
663
 
879
664
  asyncio.run(main())
880
665
  """
881
- _response = await self._client_wrapper.httpx_client.request(
882
- f"v1/agents/{jsonable_encoder(agent_id)}/messages",
883
- method="GET",
884
- params={
885
- "after": after,
886
- "before": before,
887
- "limit": limit,
888
- "group_id": group_id,
889
- "use_assistant_message": use_assistant_message,
890
- "assistant_message_tool_name": assistant_message_tool_name,
891
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
892
- "include_err": include_err,
893
- },
666
+ _response = await self._raw_client.list(
667
+ agent_id,
668
+ after=after,
669
+ before=before,
670
+ limit=limit,
671
+ group_id=group_id,
672
+ use_assistant_message=use_assistant_message,
673
+ assistant_message_tool_name=assistant_message_tool_name,
674
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
675
+ include_err=include_err,
894
676
  request_options=request_options,
895
677
  )
896
- try:
897
- if 200 <= _response.status_code < 300:
898
- return typing.cast(
899
- typing.List[LettaMessageUnion],
900
- construct_type(
901
- type_=typing.List[LettaMessageUnion], # type: ignore
902
- object_=_response.json(),
903
- ),
904
- )
905
- if _response.status_code == 422:
906
- raise UnprocessableEntityError(
907
- typing.cast(
908
- HttpValidationError,
909
- construct_type(
910
- type_=HttpValidationError, # type: ignore
911
- object_=_response.json(),
912
- ),
913
- )
914
- )
915
- _response_json = _response.json()
916
- except JSONDecodeError:
917
- raise ApiError(status_code=_response.status_code, body=_response.text)
918
- raise ApiError(status_code=_response.status_code, body=_response_json)
678
+ return _response.data
919
679
 
920
680
  async def create(
921
681
  self,
@@ -997,46 +757,18 @@ class AsyncMessagesClient:
997
757
 
998
758
  asyncio.run(main())
999
759
  """
1000
- _response = await self._client_wrapper.httpx_client.request(
1001
- f"v1/agents/{jsonable_encoder(agent_id)}/messages",
1002
- method="POST",
1003
- json={
1004
- "messages": convert_and_respect_annotation_metadata(
1005
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
1006
- ),
1007
- "max_steps": max_steps,
1008
- "use_assistant_message": use_assistant_message,
1009
- "assistant_message_tool_name": assistant_message_tool_name,
1010
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
1011
- "include_return_message_types": include_return_message_types,
1012
- "enable_thinking": enable_thinking,
1013
- },
760
+ _response = await self._raw_client.create(
761
+ agent_id,
762
+ messages=messages,
763
+ max_steps=max_steps,
764
+ use_assistant_message=use_assistant_message,
765
+ assistant_message_tool_name=assistant_message_tool_name,
766
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
767
+ include_return_message_types=include_return_message_types,
768
+ enable_thinking=enable_thinking,
1014
769
  request_options=request_options,
1015
- omit=OMIT,
1016
770
  )
1017
- try:
1018
- if 200 <= _response.status_code < 300:
1019
- return typing.cast(
1020
- LettaResponse,
1021
- construct_type(
1022
- type_=LettaResponse, # type: ignore
1023
- object_=_response.json(),
1024
- ),
1025
- )
1026
- if _response.status_code == 422:
1027
- raise UnprocessableEntityError(
1028
- typing.cast(
1029
- HttpValidationError,
1030
- construct_type(
1031
- type_=HttpValidationError, # type: ignore
1032
- object_=_response.json(),
1033
- ),
1034
- )
1035
- )
1036
- _response_json = _response.json()
1037
- except JSONDecodeError:
1038
- raise ApiError(status_code=_response.status_code, body=_response.text)
1039
- raise ApiError(status_code=_response.status_code, body=_response_json)
771
+ return _response.data
1040
772
 
1041
773
  async def modify(
1042
774
  self,
@@ -1089,38 +821,10 @@ class AsyncMessagesClient:
1089
821
 
1090
822
  asyncio.run(main())
1091
823
  """
1092
- _response = await self._client_wrapper.httpx_client.request(
1093
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/{jsonable_encoder(message_id)}",
1094
- method="PATCH",
1095
- json=convert_and_respect_annotation_metadata(
1096
- object_=request, annotation=MessagesModifyRequest, direction="write"
1097
- ),
1098
- request_options=request_options,
1099
- omit=OMIT,
824
+ _response = await self._raw_client.modify(
825
+ agent_id, message_id, request=request, request_options=request_options
1100
826
  )
1101
- try:
1102
- if 200 <= _response.status_code < 300:
1103
- return typing.cast(
1104
- MessagesModifyResponse,
1105
- construct_type(
1106
- type_=MessagesModifyResponse, # type: ignore
1107
- object_=_response.json(),
1108
- ),
1109
- )
1110
- if _response.status_code == 422:
1111
- raise UnprocessableEntityError(
1112
- typing.cast(
1113
- HttpValidationError,
1114
- construct_type(
1115
- type_=HttpValidationError, # type: ignore
1116
- object_=_response.json(),
1117
- ),
1118
- )
1119
- )
1120
- _response_json = _response.json()
1121
- except JSONDecodeError:
1122
- raise ApiError(status_code=_response.status_code, body=_response.text)
1123
- raise ApiError(status_code=_response.status_code, body=_response_json)
827
+ return _response.data
1124
828
 
1125
829
  async def create_stream(
1126
830
  self,
@@ -1134,6 +838,7 @@ class AsyncMessagesClient:
1134
838
  include_return_message_types: typing.Optional[typing.Sequence[MessageType]] = OMIT,
1135
839
  enable_thinking: typing.Optional[str] = OMIT,
1136
840
  stream_tokens: typing.Optional[bool] = OMIT,
841
+ include_pings: typing.Optional[bool] = OMIT,
1137
842
  request_options: typing.Optional[RequestOptions] = None,
1138
843
  ) -> typing.AsyncIterator[LettaStreamingResponse]:
1139
844
  """
@@ -1169,6 +874,9 @@ class AsyncMessagesClient:
1169
874
  stream_tokens : typing.Optional[bool]
1170
875
  Flag to determine if individual tokens should be streamed. Set to True for token streaming (requires stream_steps = True).
1171
876
 
877
+ include_pings : typing.Optional[bool]
878
+ Whether to include periodic keepalive ping messages in the stream to prevent connection timeouts.
879
+
1172
880
  request_options : typing.Optional[RequestOptions]
1173
881
  Request-specific configuration.
1174
882
 
@@ -1209,54 +917,21 @@ class AsyncMessagesClient:
1209
917
 
1210
918
  asyncio.run(main())
1211
919
  """
1212
- async with self._client_wrapper.httpx_client.stream(
1213
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/stream",
1214
- method="POST",
1215
- json={
1216
- "messages": convert_and_respect_annotation_metadata(
1217
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
1218
- ),
1219
- "max_steps": max_steps,
1220
- "use_assistant_message": use_assistant_message,
1221
- "assistant_message_tool_name": assistant_message_tool_name,
1222
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
1223
- "include_return_message_types": include_return_message_types,
1224
- "enable_thinking": enable_thinking,
1225
- "stream_tokens": stream_tokens,
1226
- },
920
+ async with self._raw_client.create_stream(
921
+ agent_id,
922
+ messages=messages,
923
+ max_steps=max_steps,
924
+ use_assistant_message=use_assistant_message,
925
+ assistant_message_tool_name=assistant_message_tool_name,
926
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
927
+ include_return_message_types=include_return_message_types,
928
+ enable_thinking=enable_thinking,
929
+ stream_tokens=stream_tokens,
930
+ include_pings=include_pings,
1227
931
  request_options=request_options,
1228
- omit=OMIT,
1229
- ) as _response:
1230
- try:
1231
- if 200 <= _response.status_code < 300:
1232
- _event_source = httpx_sse.EventSource(_response)
1233
- async for _sse in _event_source.aiter_sse():
1234
- try:
1235
- yield typing.cast(
1236
- LettaStreamingResponse,
1237
- construct_type(
1238
- type_=LettaStreamingResponse, # type: ignore
1239
- object_=json.loads(_sse.data),
1240
- ),
1241
- )
1242
- except:
1243
- pass
1244
- return
1245
- await _response.aread()
1246
- if _response.status_code == 422:
1247
- raise UnprocessableEntityError(
1248
- typing.cast(
1249
- HttpValidationError,
1250
- construct_type(
1251
- type_=HttpValidationError, # type: ignore
1252
- object_=_response.json(),
1253
- ),
1254
- )
1255
- )
1256
- _response_json = _response.json()
1257
- except JSONDecodeError:
1258
- raise ApiError(status_code=_response.status_code, body=_response.text)
1259
- raise ApiError(status_code=_response.status_code, body=_response_json)
932
+ ) as r:
933
+ async for _chunk in r.data:
934
+ yield _chunk
1260
935
 
1261
936
  async def cancel(
1262
937
  self,
@@ -1304,36 +979,8 @@ class AsyncMessagesClient:
1304
979
 
1305
980
  asyncio.run(main())
1306
981
  """
1307
- _response = await self._client_wrapper.httpx_client.request(
1308
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/cancel",
1309
- method="POST",
1310
- json=request,
1311
- request_options=request_options,
1312
- omit=OMIT,
1313
- )
1314
- try:
1315
- if 200 <= _response.status_code < 300:
1316
- return typing.cast(
1317
- typing.Dict[str, typing.Optional[typing.Any]],
1318
- construct_type(
1319
- type_=typing.Dict[str, typing.Optional[typing.Any]], # type: ignore
1320
- object_=_response.json(),
1321
- ),
1322
- )
1323
- if _response.status_code == 422:
1324
- raise UnprocessableEntityError(
1325
- typing.cast(
1326
- HttpValidationError,
1327
- construct_type(
1328
- type_=HttpValidationError, # type: ignore
1329
- object_=_response.json(),
1330
- ),
1331
- )
1332
- )
1333
- _response_json = _response.json()
1334
- except JSONDecodeError:
1335
- raise ApiError(status_code=_response.status_code, body=_response.text)
1336
- raise ApiError(status_code=_response.status_code, body=_response_json)
982
+ _response = await self._raw_client.cancel(agent_id, request=request, request_options=request_options)
983
+ return _response.data
1337
984
 
1338
985
  async def create_async(
1339
986
  self,
@@ -1422,50 +1069,19 @@ class AsyncMessagesClient:
1422
1069
 
1423
1070
  asyncio.run(main())
1424
1071
  """
1425
- _response = await self._client_wrapper.httpx_client.request(
1426
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/async",
1427
- method="POST",
1428
- json={
1429
- "messages": convert_and_respect_annotation_metadata(
1430
- object_=messages, annotation=typing.Sequence[MessageCreate], direction="write"
1431
- ),
1432
- "max_steps": max_steps,
1433
- "use_assistant_message": use_assistant_message,
1434
- "assistant_message_tool_name": assistant_message_tool_name,
1435
- "assistant_message_tool_kwarg": assistant_message_tool_kwarg,
1436
- "include_return_message_types": include_return_message_types,
1437
- "enable_thinking": enable_thinking,
1438
- "callback_url": callback_url,
1439
- },
1440
- headers={
1441
- "content-type": "application/json",
1442
- },
1072
+ _response = await self._raw_client.create_async(
1073
+ agent_id,
1074
+ messages=messages,
1075
+ max_steps=max_steps,
1076
+ use_assistant_message=use_assistant_message,
1077
+ assistant_message_tool_name=assistant_message_tool_name,
1078
+ assistant_message_tool_kwarg=assistant_message_tool_kwarg,
1079
+ include_return_message_types=include_return_message_types,
1080
+ enable_thinking=enable_thinking,
1081
+ callback_url=callback_url,
1443
1082
  request_options=request_options,
1444
- omit=OMIT,
1445
1083
  )
1446
- try:
1447
- if 200 <= _response.status_code < 300:
1448
- return typing.cast(
1449
- Run,
1450
- construct_type(
1451
- type_=Run, # type: ignore
1452
- object_=_response.json(),
1453
- ),
1454
- )
1455
- if _response.status_code == 422:
1456
- raise UnprocessableEntityError(
1457
- typing.cast(
1458
- HttpValidationError,
1459
- construct_type(
1460
- type_=HttpValidationError, # type: ignore
1461
- object_=_response.json(),
1462
- ),
1463
- )
1464
- )
1465
- _response_json = _response.json()
1466
- except JSONDecodeError:
1467
- raise ApiError(status_code=_response.status_code, body=_response.text)
1468
- raise ApiError(status_code=_response.status_code, body=_response_json)
1084
+ return _response.data
1469
1085
 
1470
1086
  async def reset(
1471
1087
  self,
@@ -1512,37 +1128,10 @@ class AsyncMessagesClient:
1512
1128
 
1513
1129
  asyncio.run(main())
1514
1130
  """
1515
- _response = await self._client_wrapper.httpx_client.request(
1516
- f"v1/agents/{jsonable_encoder(agent_id)}/reset-messages",
1517
- method="PATCH",
1518
- params={
1519
- "add_default_initial_messages": add_default_initial_messages,
1520
- },
1521
- request_options=request_options,
1131
+ _response = await self._raw_client.reset(
1132
+ agent_id, add_default_initial_messages=add_default_initial_messages, request_options=request_options
1522
1133
  )
1523
- try:
1524
- if 200 <= _response.status_code < 300:
1525
- return typing.cast(
1526
- AgentState,
1527
- construct_type(
1528
- type_=AgentState, # type: ignore
1529
- object_=_response.json(),
1530
- ),
1531
- )
1532
- if _response.status_code == 422:
1533
- raise UnprocessableEntityError(
1534
- typing.cast(
1535
- HttpValidationError,
1536
- construct_type(
1537
- type_=HttpValidationError, # type: ignore
1538
- object_=_response.json(),
1539
- ),
1540
- )
1541
- )
1542
- _response_json = _response.json()
1543
- except JSONDecodeError:
1544
- raise ApiError(status_code=_response.status_code, body=_response.text)
1545
- raise ApiError(status_code=_response.status_code, body=_response_json)
1134
+ return _response.data
1546
1135
 
1547
1136
  async def preview_raw_payload(
1548
1137
  self,
@@ -1604,35 +1193,7 @@ class AsyncMessagesClient:
1604
1193
 
1605
1194
  asyncio.run(main())
1606
1195
  """
1607
- _response = await self._client_wrapper.httpx_client.request(
1608
- f"v1/agents/{jsonable_encoder(agent_id)}/messages/preview-raw-payload",
1609
- method="POST",
1610
- json=convert_and_respect_annotation_metadata(
1611
- object_=request, annotation=MessagesPreviewRawPayloadRequest, direction="write"
1612
- ),
1613
- request_options=request_options,
1614
- omit=OMIT,
1196
+ _response = await self._raw_client.preview_raw_payload(
1197
+ agent_id, request=request, request_options=request_options
1615
1198
  )
1616
- try:
1617
- if 200 <= _response.status_code < 300:
1618
- return typing.cast(
1619
- typing.Dict[str, typing.Optional[typing.Any]],
1620
- construct_type(
1621
- type_=typing.Dict[str, typing.Optional[typing.Any]], # type: ignore
1622
- object_=_response.json(),
1623
- ),
1624
- )
1625
- if _response.status_code == 422:
1626
- raise UnprocessableEntityError(
1627
- typing.cast(
1628
- HttpValidationError,
1629
- construct_type(
1630
- type_=HttpValidationError, # type: ignore
1631
- object_=_response.json(),
1632
- ),
1633
- )
1634
- )
1635
- _response_json = _response.json()
1636
- except JSONDecodeError:
1637
- raise ApiError(status_code=_response.status_code, body=_response.text)
1638
- raise ApiError(status_code=_response.status_code, body=_response_json)
1199
+ return _response.data