letta-client 0.1.233__py3-none-any.whl → 0.1.235__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 +349 -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 +2088 -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 +14 -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.235.dist-info}/METADATA +24 -3
  436. letta_client-0.1.235.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.235.dist-info}/WHEEL +0 -0
@@ -0,0 +1,973 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+ from json.decoder import JSONDecodeError
5
+
6
+ from ..core.api_error import ApiError
7
+ from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
8
+ from ..core.http_response import AsyncHttpResponse, HttpResponse
9
+ from ..core.jsonable_encoder import jsonable_encoder
10
+ from ..core.request_options import RequestOptions
11
+ from ..core.unchecked_base_model import construct_type
12
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
13
+ from ..types.block import Block
14
+ from ..types.http_validation_error import HttpValidationError
15
+
16
+ # this is used as the default value for optional parameters
17
+ OMIT = typing.cast(typing.Any, ...)
18
+
19
+
20
+ class RawBlocksClient:
21
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
22
+ self._client_wrapper = client_wrapper
23
+
24
+ def list(
25
+ self,
26
+ *,
27
+ label: typing.Optional[str] = None,
28
+ templates_only: typing.Optional[bool] = None,
29
+ name: typing.Optional[str] = None,
30
+ identity_id: typing.Optional[str] = None,
31
+ identifier_keys: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
32
+ project_id: typing.Optional[str] = None,
33
+ limit: typing.Optional[int] = None,
34
+ before: typing.Optional[str] = None,
35
+ after: typing.Optional[str] = None,
36
+ label_search: typing.Optional[str] = None,
37
+ description_search: typing.Optional[str] = None,
38
+ value_search: typing.Optional[str] = None,
39
+ connected_to_agents_count_gt: typing.Optional[int] = None,
40
+ connected_to_agents_count_lt: typing.Optional[int] = None,
41
+ connected_to_agents_count_eq: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
42
+ request_options: typing.Optional[RequestOptions] = None,
43
+ ) -> HttpResponse[typing.List[Block]]:
44
+ """
45
+ Parameters
46
+ ----------
47
+ label : typing.Optional[str]
48
+ Labels to include (e.g. human, persona)
49
+
50
+ templates_only : typing.Optional[bool]
51
+ Whether to include only templates
52
+
53
+ name : typing.Optional[str]
54
+ Name of the block
55
+
56
+ identity_id : typing.Optional[str]
57
+ Search agents by identifier id
58
+
59
+ identifier_keys : typing.Optional[typing.Union[str, typing.Sequence[str]]]
60
+ Search agents by identifier keys
61
+
62
+ project_id : typing.Optional[str]
63
+ Search blocks by project id
64
+
65
+ limit : typing.Optional[int]
66
+ Number of blocks to return
67
+
68
+ before : typing.Optional[str]
69
+ Cursor for pagination. If provided, returns blocks before this cursor.
70
+
71
+ after : typing.Optional[str]
72
+ Cursor for pagination. If provided, returns blocks after this cursor.
73
+
74
+ label_search : typing.Optional[str]
75
+ Search blocks by label. If provided, returns blocks that match this label. This is a full-text search on labels.
76
+
77
+ description_search : typing.Optional[str]
78
+ Search blocks by description. If provided, returns blocks that match this description. This is a full-text search on block descriptions.
79
+
80
+ value_search : typing.Optional[str]
81
+ Search blocks by value. If provided, returns blocks that match this value.
82
+
83
+ connected_to_agents_count_gt : typing.Optional[int]
84
+ Filter blocks by the number of connected agents. If provided, returns blocks that have more than this number of connected agents.
85
+
86
+ connected_to_agents_count_lt : typing.Optional[int]
87
+ Filter blocks by the number of connected agents. If provided, returns blocks that have less than this number of connected agents.
88
+
89
+ connected_to_agents_count_eq : typing.Optional[typing.Union[int, typing.Sequence[int]]]
90
+ Filter blocks by the exact number of connected agents. If provided, returns blocks that have exactly this number of connected agents.
91
+
92
+ request_options : typing.Optional[RequestOptions]
93
+ Request-specific configuration.
94
+
95
+ Returns
96
+ -------
97
+ HttpResponse[typing.List[Block]]
98
+ Successful Response
99
+ """
100
+ _response = self._client_wrapper.httpx_client.request(
101
+ "v1/blocks/",
102
+ method="GET",
103
+ params={
104
+ "label": label,
105
+ "templates_only": templates_only,
106
+ "name": name,
107
+ "identity_id": identity_id,
108
+ "identifier_keys": identifier_keys,
109
+ "project_id": project_id,
110
+ "limit": limit,
111
+ "before": before,
112
+ "after": after,
113
+ "label_search": label_search,
114
+ "description_search": description_search,
115
+ "value_search": value_search,
116
+ "connected_to_agents_count_gt": connected_to_agents_count_gt,
117
+ "connected_to_agents_count_lt": connected_to_agents_count_lt,
118
+ "connected_to_agents_count_eq": connected_to_agents_count_eq,
119
+ },
120
+ request_options=request_options,
121
+ )
122
+ try:
123
+ if 200 <= _response.status_code < 300:
124
+ _data = typing.cast(
125
+ typing.List[Block],
126
+ construct_type(
127
+ type_=typing.List[Block], # type: ignore
128
+ object_=_response.json(),
129
+ ),
130
+ )
131
+ return HttpResponse(response=_response, data=_data)
132
+ if _response.status_code == 422:
133
+ raise UnprocessableEntityError(
134
+ headers=dict(_response.headers),
135
+ body=typing.cast(
136
+ HttpValidationError,
137
+ construct_type(
138
+ type_=HttpValidationError, # type: ignore
139
+ object_=_response.json(),
140
+ ),
141
+ ),
142
+ )
143
+ _response_json = _response.json()
144
+ except JSONDecodeError:
145
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
146
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
147
+
148
+ def create(
149
+ self,
150
+ *,
151
+ value: str,
152
+ label: str,
153
+ limit: typing.Optional[int] = OMIT,
154
+ project_id: typing.Optional[str] = OMIT,
155
+ name: typing.Optional[str] = OMIT,
156
+ is_template: typing.Optional[bool] = OMIT,
157
+ preserve_on_migration: typing.Optional[bool] = OMIT,
158
+ read_only: typing.Optional[bool] = OMIT,
159
+ description: typing.Optional[str] = OMIT,
160
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
161
+ request_options: typing.Optional[RequestOptions] = None,
162
+ ) -> HttpResponse[Block]:
163
+ """
164
+ Parameters
165
+ ----------
166
+ value : str
167
+ Value of the block.
168
+
169
+ label : str
170
+ Label of the block.
171
+
172
+ limit : typing.Optional[int]
173
+ Character limit of the block.
174
+
175
+ project_id : typing.Optional[str]
176
+ The associated project id.
177
+
178
+ name : typing.Optional[str]
179
+ Name of the block if it is a template.
180
+
181
+ is_template : typing.Optional[bool]
182
+
183
+ preserve_on_migration : typing.Optional[bool]
184
+ Preserve the block on template migration.
185
+
186
+ read_only : typing.Optional[bool]
187
+ Whether the agent has read-only access to the block.
188
+
189
+ description : typing.Optional[str]
190
+ Description of the block.
191
+
192
+ metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
193
+ Metadata of the block.
194
+
195
+ request_options : typing.Optional[RequestOptions]
196
+ Request-specific configuration.
197
+
198
+ Returns
199
+ -------
200
+ HttpResponse[Block]
201
+ Successful Response
202
+ """
203
+ _response = self._client_wrapper.httpx_client.request(
204
+ "v1/blocks/",
205
+ method="POST",
206
+ json={
207
+ "value": value,
208
+ "limit": limit,
209
+ "project_id": project_id,
210
+ "name": name,
211
+ "is_template": is_template,
212
+ "preserve_on_migration": preserve_on_migration,
213
+ "label": label,
214
+ "read_only": read_only,
215
+ "description": description,
216
+ "metadata": metadata,
217
+ },
218
+ headers={
219
+ "content-type": "application/json",
220
+ },
221
+ request_options=request_options,
222
+ omit=OMIT,
223
+ )
224
+ try:
225
+ if 200 <= _response.status_code < 300:
226
+ _data = typing.cast(
227
+ Block,
228
+ construct_type(
229
+ type_=Block, # type: ignore
230
+ object_=_response.json(),
231
+ ),
232
+ )
233
+ return HttpResponse(response=_response, data=_data)
234
+ if _response.status_code == 422:
235
+ raise UnprocessableEntityError(
236
+ headers=dict(_response.headers),
237
+ body=typing.cast(
238
+ HttpValidationError,
239
+ construct_type(
240
+ type_=HttpValidationError, # type: ignore
241
+ object_=_response.json(),
242
+ ),
243
+ ),
244
+ )
245
+ _response_json = _response.json()
246
+ except JSONDecodeError:
247
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
248
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
249
+
250
+ def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[int]:
251
+ """
252
+ Count all blocks created by a user.
253
+
254
+ Parameters
255
+ ----------
256
+ request_options : typing.Optional[RequestOptions]
257
+ Request-specific configuration.
258
+
259
+ Returns
260
+ -------
261
+ HttpResponse[int]
262
+ Successful Response
263
+ """
264
+ _response = self._client_wrapper.httpx_client.request(
265
+ "v1/blocks/count",
266
+ method="GET",
267
+ request_options=request_options,
268
+ )
269
+ try:
270
+ if 200 <= _response.status_code < 300:
271
+ _data = typing.cast(
272
+ int,
273
+ construct_type(
274
+ type_=int, # type: ignore
275
+ object_=_response.json(),
276
+ ),
277
+ )
278
+ return HttpResponse(response=_response, data=_data)
279
+ if _response.status_code == 422:
280
+ raise UnprocessableEntityError(
281
+ headers=dict(_response.headers),
282
+ body=typing.cast(
283
+ HttpValidationError,
284
+ construct_type(
285
+ type_=HttpValidationError, # type: ignore
286
+ object_=_response.json(),
287
+ ),
288
+ ),
289
+ )
290
+ _response_json = _response.json()
291
+ except JSONDecodeError:
292
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
293
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
294
+
295
+ def retrieve(
296
+ self, block_id: str, *, request_options: typing.Optional[RequestOptions] = None
297
+ ) -> HttpResponse[Block]:
298
+ """
299
+ Parameters
300
+ ----------
301
+ block_id : str
302
+
303
+ request_options : typing.Optional[RequestOptions]
304
+ Request-specific configuration.
305
+
306
+ Returns
307
+ -------
308
+ HttpResponse[Block]
309
+ Successful Response
310
+ """
311
+ _response = self._client_wrapper.httpx_client.request(
312
+ f"v1/blocks/{jsonable_encoder(block_id)}",
313
+ method="GET",
314
+ request_options=request_options,
315
+ )
316
+ try:
317
+ if 200 <= _response.status_code < 300:
318
+ _data = typing.cast(
319
+ Block,
320
+ construct_type(
321
+ type_=Block, # type: ignore
322
+ object_=_response.json(),
323
+ ),
324
+ )
325
+ return HttpResponse(response=_response, data=_data)
326
+ if _response.status_code == 422:
327
+ raise UnprocessableEntityError(
328
+ headers=dict(_response.headers),
329
+ body=typing.cast(
330
+ HttpValidationError,
331
+ construct_type(
332
+ type_=HttpValidationError, # type: ignore
333
+ object_=_response.json(),
334
+ ),
335
+ ),
336
+ )
337
+ _response_json = _response.json()
338
+ except JSONDecodeError:
339
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
340
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
341
+
342
+ def delete(
343
+ self, block_id: str, *, request_options: typing.Optional[RequestOptions] = None
344
+ ) -> HttpResponse[typing.Optional[typing.Any]]:
345
+ """
346
+ Parameters
347
+ ----------
348
+ block_id : str
349
+
350
+ request_options : typing.Optional[RequestOptions]
351
+ Request-specific configuration.
352
+
353
+ Returns
354
+ -------
355
+ HttpResponse[typing.Optional[typing.Any]]
356
+ Successful Response
357
+ """
358
+ _response = self._client_wrapper.httpx_client.request(
359
+ f"v1/blocks/{jsonable_encoder(block_id)}",
360
+ method="DELETE",
361
+ request_options=request_options,
362
+ )
363
+ try:
364
+ if _response is None or not _response.text.strip():
365
+ return HttpResponse(response=_response, data=None)
366
+ if 200 <= _response.status_code < 300:
367
+ _data = typing.cast(
368
+ typing.Optional[typing.Any],
369
+ construct_type(
370
+ type_=typing.Optional[typing.Any], # type: ignore
371
+ object_=_response.json(),
372
+ ),
373
+ )
374
+ return HttpResponse(response=_response, data=_data)
375
+ if _response.status_code == 422:
376
+ raise UnprocessableEntityError(
377
+ headers=dict(_response.headers),
378
+ body=typing.cast(
379
+ HttpValidationError,
380
+ construct_type(
381
+ type_=HttpValidationError, # type: ignore
382
+ object_=_response.json(),
383
+ ),
384
+ ),
385
+ )
386
+ _response_json = _response.json()
387
+ except JSONDecodeError:
388
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
389
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
390
+
391
+ def modify(
392
+ self,
393
+ block_id: str,
394
+ *,
395
+ value: typing.Optional[str] = OMIT,
396
+ limit: typing.Optional[int] = OMIT,
397
+ project_id: typing.Optional[str] = OMIT,
398
+ name: typing.Optional[str] = OMIT,
399
+ is_template: typing.Optional[bool] = OMIT,
400
+ preserve_on_migration: typing.Optional[bool] = OMIT,
401
+ label: typing.Optional[str] = OMIT,
402
+ read_only: typing.Optional[bool] = OMIT,
403
+ description: typing.Optional[str] = OMIT,
404
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
405
+ request_options: typing.Optional[RequestOptions] = None,
406
+ ) -> HttpResponse[Block]:
407
+ """
408
+ Parameters
409
+ ----------
410
+ block_id : str
411
+
412
+ value : typing.Optional[str]
413
+ Value of the block.
414
+
415
+ limit : typing.Optional[int]
416
+ Character limit of the block.
417
+
418
+ project_id : typing.Optional[str]
419
+ The associated project id.
420
+
421
+ name : typing.Optional[str]
422
+ Name of the block if it is a template.
423
+
424
+ is_template : typing.Optional[bool]
425
+ Whether the block is a template (e.g. saved human/persona options).
426
+
427
+ preserve_on_migration : typing.Optional[bool]
428
+ Preserve the block on template migration.
429
+
430
+ label : typing.Optional[str]
431
+ Label of the block (e.g. 'human', 'persona') in the context window.
432
+
433
+ read_only : typing.Optional[bool]
434
+ Whether the agent has read-only access to the block.
435
+
436
+ description : typing.Optional[str]
437
+ Description of the block.
438
+
439
+ metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
440
+ Metadata of the block.
441
+
442
+ request_options : typing.Optional[RequestOptions]
443
+ Request-specific configuration.
444
+
445
+ Returns
446
+ -------
447
+ HttpResponse[Block]
448
+ Successful Response
449
+ """
450
+ _response = self._client_wrapper.httpx_client.request(
451
+ f"v1/blocks/{jsonable_encoder(block_id)}",
452
+ method="PATCH",
453
+ json={
454
+ "value": value,
455
+ "limit": limit,
456
+ "project_id": project_id,
457
+ "name": name,
458
+ "is_template": is_template,
459
+ "preserve_on_migration": preserve_on_migration,
460
+ "label": label,
461
+ "read_only": read_only,
462
+ "description": description,
463
+ "metadata": metadata,
464
+ },
465
+ headers={
466
+ "content-type": "application/json",
467
+ },
468
+ request_options=request_options,
469
+ omit=OMIT,
470
+ )
471
+ try:
472
+ if 200 <= _response.status_code < 300:
473
+ _data = typing.cast(
474
+ Block,
475
+ construct_type(
476
+ type_=Block, # type: ignore
477
+ object_=_response.json(),
478
+ ),
479
+ )
480
+ return HttpResponse(response=_response, data=_data)
481
+ if _response.status_code == 422:
482
+ raise UnprocessableEntityError(
483
+ headers=dict(_response.headers),
484
+ body=typing.cast(
485
+ HttpValidationError,
486
+ construct_type(
487
+ type_=HttpValidationError, # type: ignore
488
+ object_=_response.json(),
489
+ ),
490
+ ),
491
+ )
492
+ _response_json = _response.json()
493
+ except JSONDecodeError:
494
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
495
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
496
+
497
+
498
+ class AsyncRawBlocksClient:
499
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
500
+ self._client_wrapper = client_wrapper
501
+
502
+ async def list(
503
+ self,
504
+ *,
505
+ label: typing.Optional[str] = None,
506
+ templates_only: typing.Optional[bool] = None,
507
+ name: typing.Optional[str] = None,
508
+ identity_id: typing.Optional[str] = None,
509
+ identifier_keys: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
510
+ project_id: typing.Optional[str] = None,
511
+ limit: typing.Optional[int] = None,
512
+ before: typing.Optional[str] = None,
513
+ after: typing.Optional[str] = None,
514
+ label_search: typing.Optional[str] = None,
515
+ description_search: typing.Optional[str] = None,
516
+ value_search: typing.Optional[str] = None,
517
+ connected_to_agents_count_gt: typing.Optional[int] = None,
518
+ connected_to_agents_count_lt: typing.Optional[int] = None,
519
+ connected_to_agents_count_eq: typing.Optional[typing.Union[int, typing.Sequence[int]]] = None,
520
+ request_options: typing.Optional[RequestOptions] = None,
521
+ ) -> AsyncHttpResponse[typing.List[Block]]:
522
+ """
523
+ Parameters
524
+ ----------
525
+ label : typing.Optional[str]
526
+ Labels to include (e.g. human, persona)
527
+
528
+ templates_only : typing.Optional[bool]
529
+ Whether to include only templates
530
+
531
+ name : typing.Optional[str]
532
+ Name of the block
533
+
534
+ identity_id : typing.Optional[str]
535
+ Search agents by identifier id
536
+
537
+ identifier_keys : typing.Optional[typing.Union[str, typing.Sequence[str]]]
538
+ Search agents by identifier keys
539
+
540
+ project_id : typing.Optional[str]
541
+ Search blocks by project id
542
+
543
+ limit : typing.Optional[int]
544
+ Number of blocks to return
545
+
546
+ before : typing.Optional[str]
547
+ Cursor for pagination. If provided, returns blocks before this cursor.
548
+
549
+ after : typing.Optional[str]
550
+ Cursor for pagination. If provided, returns blocks after this cursor.
551
+
552
+ label_search : typing.Optional[str]
553
+ Search blocks by label. If provided, returns blocks that match this label. This is a full-text search on labels.
554
+
555
+ description_search : typing.Optional[str]
556
+ Search blocks by description. If provided, returns blocks that match this description. This is a full-text search on block descriptions.
557
+
558
+ value_search : typing.Optional[str]
559
+ Search blocks by value. If provided, returns blocks that match this value.
560
+
561
+ connected_to_agents_count_gt : typing.Optional[int]
562
+ Filter blocks by the number of connected agents. If provided, returns blocks that have more than this number of connected agents.
563
+
564
+ connected_to_agents_count_lt : typing.Optional[int]
565
+ Filter blocks by the number of connected agents. If provided, returns blocks that have less than this number of connected agents.
566
+
567
+ connected_to_agents_count_eq : typing.Optional[typing.Union[int, typing.Sequence[int]]]
568
+ Filter blocks by the exact number of connected agents. If provided, returns blocks that have exactly this number of connected agents.
569
+
570
+ request_options : typing.Optional[RequestOptions]
571
+ Request-specific configuration.
572
+
573
+ Returns
574
+ -------
575
+ AsyncHttpResponse[typing.List[Block]]
576
+ Successful Response
577
+ """
578
+ _response = await self._client_wrapper.httpx_client.request(
579
+ "v1/blocks/",
580
+ method="GET",
581
+ params={
582
+ "label": label,
583
+ "templates_only": templates_only,
584
+ "name": name,
585
+ "identity_id": identity_id,
586
+ "identifier_keys": identifier_keys,
587
+ "project_id": project_id,
588
+ "limit": limit,
589
+ "before": before,
590
+ "after": after,
591
+ "label_search": label_search,
592
+ "description_search": description_search,
593
+ "value_search": value_search,
594
+ "connected_to_agents_count_gt": connected_to_agents_count_gt,
595
+ "connected_to_agents_count_lt": connected_to_agents_count_lt,
596
+ "connected_to_agents_count_eq": connected_to_agents_count_eq,
597
+ },
598
+ request_options=request_options,
599
+ )
600
+ try:
601
+ if 200 <= _response.status_code < 300:
602
+ _data = typing.cast(
603
+ typing.List[Block],
604
+ construct_type(
605
+ type_=typing.List[Block], # type: ignore
606
+ object_=_response.json(),
607
+ ),
608
+ )
609
+ return AsyncHttpResponse(response=_response, data=_data)
610
+ if _response.status_code == 422:
611
+ raise UnprocessableEntityError(
612
+ headers=dict(_response.headers),
613
+ body=typing.cast(
614
+ HttpValidationError,
615
+ construct_type(
616
+ type_=HttpValidationError, # type: ignore
617
+ object_=_response.json(),
618
+ ),
619
+ ),
620
+ )
621
+ _response_json = _response.json()
622
+ except JSONDecodeError:
623
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
624
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
625
+
626
+ async def create(
627
+ self,
628
+ *,
629
+ value: str,
630
+ label: str,
631
+ limit: typing.Optional[int] = OMIT,
632
+ project_id: typing.Optional[str] = OMIT,
633
+ name: typing.Optional[str] = OMIT,
634
+ is_template: typing.Optional[bool] = OMIT,
635
+ preserve_on_migration: typing.Optional[bool] = OMIT,
636
+ read_only: typing.Optional[bool] = OMIT,
637
+ description: typing.Optional[str] = OMIT,
638
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
639
+ request_options: typing.Optional[RequestOptions] = None,
640
+ ) -> AsyncHttpResponse[Block]:
641
+ """
642
+ Parameters
643
+ ----------
644
+ value : str
645
+ Value of the block.
646
+
647
+ label : str
648
+ Label of the block.
649
+
650
+ limit : typing.Optional[int]
651
+ Character limit of the block.
652
+
653
+ project_id : typing.Optional[str]
654
+ The associated project id.
655
+
656
+ name : typing.Optional[str]
657
+ Name of the block if it is a template.
658
+
659
+ is_template : typing.Optional[bool]
660
+
661
+ preserve_on_migration : typing.Optional[bool]
662
+ Preserve the block on template migration.
663
+
664
+ read_only : typing.Optional[bool]
665
+ Whether the agent has read-only access to the block.
666
+
667
+ description : typing.Optional[str]
668
+ Description of the block.
669
+
670
+ metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
671
+ Metadata of the block.
672
+
673
+ request_options : typing.Optional[RequestOptions]
674
+ Request-specific configuration.
675
+
676
+ Returns
677
+ -------
678
+ AsyncHttpResponse[Block]
679
+ Successful Response
680
+ """
681
+ _response = await self._client_wrapper.httpx_client.request(
682
+ "v1/blocks/",
683
+ method="POST",
684
+ json={
685
+ "value": value,
686
+ "limit": limit,
687
+ "project_id": project_id,
688
+ "name": name,
689
+ "is_template": is_template,
690
+ "preserve_on_migration": preserve_on_migration,
691
+ "label": label,
692
+ "read_only": read_only,
693
+ "description": description,
694
+ "metadata": metadata,
695
+ },
696
+ headers={
697
+ "content-type": "application/json",
698
+ },
699
+ request_options=request_options,
700
+ omit=OMIT,
701
+ )
702
+ try:
703
+ if 200 <= _response.status_code < 300:
704
+ _data = typing.cast(
705
+ Block,
706
+ construct_type(
707
+ type_=Block, # type: ignore
708
+ object_=_response.json(),
709
+ ),
710
+ )
711
+ return AsyncHttpResponse(response=_response, data=_data)
712
+ if _response.status_code == 422:
713
+ raise UnprocessableEntityError(
714
+ headers=dict(_response.headers),
715
+ body=typing.cast(
716
+ HttpValidationError,
717
+ construct_type(
718
+ type_=HttpValidationError, # type: ignore
719
+ object_=_response.json(),
720
+ ),
721
+ ),
722
+ )
723
+ _response_json = _response.json()
724
+ except JSONDecodeError:
725
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
726
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
727
+
728
+ async def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> AsyncHttpResponse[int]:
729
+ """
730
+ Count all blocks created by a user.
731
+
732
+ Parameters
733
+ ----------
734
+ request_options : typing.Optional[RequestOptions]
735
+ Request-specific configuration.
736
+
737
+ Returns
738
+ -------
739
+ AsyncHttpResponse[int]
740
+ Successful Response
741
+ """
742
+ _response = await self._client_wrapper.httpx_client.request(
743
+ "v1/blocks/count",
744
+ method="GET",
745
+ request_options=request_options,
746
+ )
747
+ try:
748
+ if 200 <= _response.status_code < 300:
749
+ _data = typing.cast(
750
+ int,
751
+ construct_type(
752
+ type_=int, # type: ignore
753
+ object_=_response.json(),
754
+ ),
755
+ )
756
+ return AsyncHttpResponse(response=_response, data=_data)
757
+ if _response.status_code == 422:
758
+ raise UnprocessableEntityError(
759
+ headers=dict(_response.headers),
760
+ body=typing.cast(
761
+ HttpValidationError,
762
+ construct_type(
763
+ type_=HttpValidationError, # type: ignore
764
+ object_=_response.json(),
765
+ ),
766
+ ),
767
+ )
768
+ _response_json = _response.json()
769
+ except JSONDecodeError:
770
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
771
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
772
+
773
+ async def retrieve(
774
+ self, block_id: str, *, request_options: typing.Optional[RequestOptions] = None
775
+ ) -> AsyncHttpResponse[Block]:
776
+ """
777
+ Parameters
778
+ ----------
779
+ block_id : str
780
+
781
+ request_options : typing.Optional[RequestOptions]
782
+ Request-specific configuration.
783
+
784
+ Returns
785
+ -------
786
+ AsyncHttpResponse[Block]
787
+ Successful Response
788
+ """
789
+ _response = await self._client_wrapper.httpx_client.request(
790
+ f"v1/blocks/{jsonable_encoder(block_id)}",
791
+ method="GET",
792
+ request_options=request_options,
793
+ )
794
+ try:
795
+ if 200 <= _response.status_code < 300:
796
+ _data = typing.cast(
797
+ Block,
798
+ construct_type(
799
+ type_=Block, # type: ignore
800
+ object_=_response.json(),
801
+ ),
802
+ )
803
+ return AsyncHttpResponse(response=_response, data=_data)
804
+ if _response.status_code == 422:
805
+ raise UnprocessableEntityError(
806
+ headers=dict(_response.headers),
807
+ body=typing.cast(
808
+ HttpValidationError,
809
+ construct_type(
810
+ type_=HttpValidationError, # type: ignore
811
+ object_=_response.json(),
812
+ ),
813
+ ),
814
+ )
815
+ _response_json = _response.json()
816
+ except JSONDecodeError:
817
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
818
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
819
+
820
+ async def delete(
821
+ self, block_id: str, *, request_options: typing.Optional[RequestOptions] = None
822
+ ) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
823
+ """
824
+ Parameters
825
+ ----------
826
+ block_id : str
827
+
828
+ request_options : typing.Optional[RequestOptions]
829
+ Request-specific configuration.
830
+
831
+ Returns
832
+ -------
833
+ AsyncHttpResponse[typing.Optional[typing.Any]]
834
+ Successful Response
835
+ """
836
+ _response = await self._client_wrapper.httpx_client.request(
837
+ f"v1/blocks/{jsonable_encoder(block_id)}",
838
+ method="DELETE",
839
+ request_options=request_options,
840
+ )
841
+ try:
842
+ if _response is None or not _response.text.strip():
843
+ return AsyncHttpResponse(response=_response, data=None)
844
+ if 200 <= _response.status_code < 300:
845
+ _data = typing.cast(
846
+ typing.Optional[typing.Any],
847
+ construct_type(
848
+ type_=typing.Optional[typing.Any], # type: ignore
849
+ object_=_response.json(),
850
+ ),
851
+ )
852
+ return AsyncHttpResponse(response=_response, data=_data)
853
+ if _response.status_code == 422:
854
+ raise UnprocessableEntityError(
855
+ headers=dict(_response.headers),
856
+ body=typing.cast(
857
+ HttpValidationError,
858
+ construct_type(
859
+ type_=HttpValidationError, # type: ignore
860
+ object_=_response.json(),
861
+ ),
862
+ ),
863
+ )
864
+ _response_json = _response.json()
865
+ except JSONDecodeError:
866
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
867
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
868
+
869
+ async def modify(
870
+ self,
871
+ block_id: str,
872
+ *,
873
+ value: typing.Optional[str] = OMIT,
874
+ limit: typing.Optional[int] = OMIT,
875
+ project_id: typing.Optional[str] = OMIT,
876
+ name: typing.Optional[str] = OMIT,
877
+ is_template: typing.Optional[bool] = OMIT,
878
+ preserve_on_migration: typing.Optional[bool] = OMIT,
879
+ label: typing.Optional[str] = OMIT,
880
+ read_only: typing.Optional[bool] = OMIT,
881
+ description: typing.Optional[str] = OMIT,
882
+ metadata: typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]] = OMIT,
883
+ request_options: typing.Optional[RequestOptions] = None,
884
+ ) -> AsyncHttpResponse[Block]:
885
+ """
886
+ Parameters
887
+ ----------
888
+ block_id : str
889
+
890
+ value : typing.Optional[str]
891
+ Value of the block.
892
+
893
+ limit : typing.Optional[int]
894
+ Character limit of the block.
895
+
896
+ project_id : typing.Optional[str]
897
+ The associated project id.
898
+
899
+ name : typing.Optional[str]
900
+ Name of the block if it is a template.
901
+
902
+ is_template : typing.Optional[bool]
903
+ Whether the block is a template (e.g. saved human/persona options).
904
+
905
+ preserve_on_migration : typing.Optional[bool]
906
+ Preserve the block on template migration.
907
+
908
+ label : typing.Optional[str]
909
+ Label of the block (e.g. 'human', 'persona') in the context window.
910
+
911
+ read_only : typing.Optional[bool]
912
+ Whether the agent has read-only access to the block.
913
+
914
+ description : typing.Optional[str]
915
+ Description of the block.
916
+
917
+ metadata : typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]
918
+ Metadata of the block.
919
+
920
+ request_options : typing.Optional[RequestOptions]
921
+ Request-specific configuration.
922
+
923
+ Returns
924
+ -------
925
+ AsyncHttpResponse[Block]
926
+ Successful Response
927
+ """
928
+ _response = await self._client_wrapper.httpx_client.request(
929
+ f"v1/blocks/{jsonable_encoder(block_id)}",
930
+ method="PATCH",
931
+ json={
932
+ "value": value,
933
+ "limit": limit,
934
+ "project_id": project_id,
935
+ "name": name,
936
+ "is_template": is_template,
937
+ "preserve_on_migration": preserve_on_migration,
938
+ "label": label,
939
+ "read_only": read_only,
940
+ "description": description,
941
+ "metadata": metadata,
942
+ },
943
+ headers={
944
+ "content-type": "application/json",
945
+ },
946
+ request_options=request_options,
947
+ omit=OMIT,
948
+ )
949
+ try:
950
+ if 200 <= _response.status_code < 300:
951
+ _data = typing.cast(
952
+ Block,
953
+ construct_type(
954
+ type_=Block, # type: ignore
955
+ object_=_response.json(),
956
+ ),
957
+ )
958
+ return AsyncHttpResponse(response=_response, data=_data)
959
+ if _response.status_code == 422:
960
+ raise UnprocessableEntityError(
961
+ headers=dict(_response.headers),
962
+ body=typing.cast(
963
+ HttpValidationError,
964
+ construct_type(
965
+ type_=HttpValidationError, # type: ignore
966
+ object_=_response.json(),
967
+ ),
968
+ ),
969
+ )
970
+ _response_json = _response.json()
971
+ except JSONDecodeError:
972
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
973
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)