letta-client 0.1.232__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 (440) hide show
  1. letta_client/__init__.py +4 -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 +4 -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 +28 -0
  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 +4 -2
  372. letta_client/types/sandbox_config_update.py +3 -2
  373. letta_client/types/sandbox_config_update_config.py +4 -2
  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/sandbox_type.py +1 -1
  378. letta_client/types/sleeptime_manager.py +2 -1
  379. letta_client/types/sleeptime_manager_update.py +2 -1
  380. letta_client/types/source.py +5 -4
  381. letta_client/types/source_create.py +4 -3
  382. letta_client/types/source_stats.py +4 -3
  383. letta_client/types/source_update.py +3 -2
  384. letta_client/types/sse_server_config.py +4 -3
  385. letta_client/types/stdio_server_config.py +4 -3
  386. letta_client/types/step.py +5 -4
  387. letta_client/types/streamable_http_server_config.py +4 -3
  388. letta_client/types/supervisor_manager.py +2 -1
  389. letta_client/types/supervisor_manager_update.py +2 -1
  390. letta_client/types/system_message.py +2 -1
  391. letta_client/types/tag_schema.py +3 -2
  392. letta_client/types/terminal_tool_rule.py +3 -2
  393. letta_client/types/text_content.py +2 -1
  394. letta_client/types/text_response_format.py +3 -2
  395. letta_client/types/tool.py +5 -4
  396. letta_client/types/tool_annotations.py +4 -3
  397. letta_client/types/tool_call.py +3 -2
  398. letta_client/types/tool_call_content.py +2 -1
  399. letta_client/types/tool_call_delta.py +3 -2
  400. letta_client/types/tool_call_message.py +4 -3
  401. letta_client/types/tool_call_message_tool_call.py +1 -0
  402. letta_client/types/tool_create.py +3 -2
  403. letta_client/types/tool_env_var_schema.py +3 -2
  404. letta_client/types/tool_json_schema.py +4 -3
  405. letta_client/types/tool_return.py +4 -3
  406. letta_client/types/tool_return_content.py +2 -1
  407. letta_client/types/tool_return_message.py +4 -3
  408. letta_client/types/tool_schema.py +5 -4
  409. letta_client/types/tool_type.py +0 -1
  410. letta_client/types/update_assistant_message.py +3 -2
  411. letta_client/types/update_assistant_message_content.py +1 -0
  412. letta_client/types/update_reasoning_message.py +3 -2
  413. letta_client/types/update_ssemcp_server.py +2 -1
  414. letta_client/types/update_stdio_mcp_server.py +3 -2
  415. letta_client/types/update_streamable_httpmcp_server.py +2 -1
  416. letta_client/types/update_system_message.py +2 -1
  417. letta_client/types/update_user_message.py +3 -2
  418. letta_client/types/update_user_message_content.py +1 -0
  419. letta_client/types/url_image.py +2 -1
  420. letta_client/types/usage_statistics.py +5 -4
  421. letta_client/types/usage_statistics_completion_token_details.py +3 -2
  422. letta_client/types/usage_statistics_prompt_token_details.py +3 -2
  423. letta_client/types/user.py +3 -2
  424. letta_client/types/user_create.py +3 -2
  425. letta_client/types/user_message.py +3 -2
  426. letta_client/types/user_message_content.py +1 -0
  427. letta_client/types/user_update.py +3 -2
  428. letta_client/types/validation_error.py +4 -3
  429. letta_client/types/voice_sleeptime_manager.py +2 -1
  430. letta_client/types/voice_sleeptime_manager_update.py +2 -1
  431. letta_client/types/web_search_options.py +4 -3
  432. letta_client/types/web_search_options_user_location.py +4 -3
  433. letta_client/types/web_search_options_user_location_approximate.py +3 -2
  434. letta_client/voice/__init__.py +2 -0
  435. letta_client/voice/client.py +33 -74
  436. letta_client/voice/raw_client.py +154 -0
  437. {letta_client-0.1.232.dist-info → letta_client-0.1.234.dist-info}/METADATA +24 -3
  438. letta_client-0.1.234.dist-info/RECORD +503 -0
  439. letta_client-0.1.232.dist-info/RECORD +0 -454
  440. {letta_client-0.1.232.dist-info → letta_client-0.1.234.dist-info}/WHEEL +0 -0
@@ -0,0 +1,807 @@
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.serialization import convert_and_respect_annotation_metadata
12
+ from ..core.unchecked_base_model import construct_type
13
+ from ..errors.unprocessable_entity_error import UnprocessableEntityError
14
+ from ..types.group import Group
15
+ from ..types.http_validation_error import HttpValidationError
16
+ from ..types.manager_type import ManagerType
17
+ from .types.group_create_manager_config import GroupCreateManagerConfig
18
+ from .types.group_update_manager_config import GroupUpdateManagerConfig
19
+
20
+ # this is used as the default value for optional parameters
21
+ OMIT = typing.cast(typing.Any, ...)
22
+
23
+
24
+ class RawGroupsClient:
25
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
26
+ self._client_wrapper = client_wrapper
27
+
28
+ def list(
29
+ self,
30
+ *,
31
+ manager_type: typing.Optional[ManagerType] = None,
32
+ before: typing.Optional[str] = None,
33
+ after: typing.Optional[str] = None,
34
+ limit: typing.Optional[int] = None,
35
+ project_id: typing.Optional[str] = None,
36
+ request_options: typing.Optional[RequestOptions] = None,
37
+ ) -> HttpResponse[typing.List[Group]]:
38
+ """
39
+ Fetch all multi-agent groups matching query.
40
+
41
+ Parameters
42
+ ----------
43
+ manager_type : typing.Optional[ManagerType]
44
+ Search groups by manager type
45
+
46
+ before : typing.Optional[str]
47
+ Cursor for pagination
48
+
49
+ after : typing.Optional[str]
50
+ Cursor for pagination
51
+
52
+ limit : typing.Optional[int]
53
+ Limit for pagination
54
+
55
+ project_id : typing.Optional[str]
56
+ Search groups by project id
57
+
58
+ request_options : typing.Optional[RequestOptions]
59
+ Request-specific configuration.
60
+
61
+ Returns
62
+ -------
63
+ HttpResponse[typing.List[Group]]
64
+ Successful Response
65
+ """
66
+ _response = self._client_wrapper.httpx_client.request(
67
+ "v1/groups/",
68
+ method="GET",
69
+ params={
70
+ "manager_type": manager_type,
71
+ "before": before,
72
+ "after": after,
73
+ "limit": limit,
74
+ "project_id": project_id,
75
+ },
76
+ request_options=request_options,
77
+ )
78
+ try:
79
+ if 200 <= _response.status_code < 300:
80
+ _data = typing.cast(
81
+ typing.List[Group],
82
+ construct_type(
83
+ type_=typing.List[Group], # type: ignore
84
+ object_=_response.json(),
85
+ ),
86
+ )
87
+ return HttpResponse(response=_response, data=_data)
88
+ if _response.status_code == 422:
89
+ raise UnprocessableEntityError(
90
+ headers=dict(_response.headers),
91
+ body=typing.cast(
92
+ HttpValidationError,
93
+ construct_type(
94
+ type_=HttpValidationError, # type: ignore
95
+ object_=_response.json(),
96
+ ),
97
+ ),
98
+ )
99
+ _response_json = _response.json()
100
+ except JSONDecodeError:
101
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
102
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
103
+
104
+ def create(
105
+ self,
106
+ *,
107
+ agent_ids: typing.Sequence[str],
108
+ description: str,
109
+ manager_config: typing.Optional[GroupCreateManagerConfig] = OMIT,
110
+ project_id: typing.Optional[str] = OMIT,
111
+ shared_block_ids: typing.Optional[typing.Sequence[str]] = OMIT,
112
+ request_options: typing.Optional[RequestOptions] = None,
113
+ ) -> HttpResponse[Group]:
114
+ """
115
+ Create a new multi-agent group with the specified configuration.
116
+
117
+ Parameters
118
+ ----------
119
+ agent_ids : typing.Sequence[str]
120
+
121
+
122
+ description : str
123
+
124
+
125
+ manager_config : typing.Optional[GroupCreateManagerConfig]
126
+
127
+
128
+ project_id : typing.Optional[str]
129
+ The associated project id.
130
+
131
+ shared_block_ids : typing.Optional[typing.Sequence[str]]
132
+
133
+
134
+ request_options : typing.Optional[RequestOptions]
135
+ Request-specific configuration.
136
+
137
+ Returns
138
+ -------
139
+ HttpResponse[Group]
140
+ Successful Response
141
+ """
142
+ _response = self._client_wrapper.httpx_client.request(
143
+ "v1/groups/",
144
+ method="POST",
145
+ json={
146
+ "agent_ids": agent_ids,
147
+ "description": description,
148
+ "manager_config": convert_and_respect_annotation_metadata(
149
+ object_=manager_config, annotation=GroupCreateManagerConfig, direction="write"
150
+ ),
151
+ "project_id": project_id,
152
+ "shared_block_ids": shared_block_ids,
153
+ },
154
+ headers={
155
+ "content-type": "application/json",
156
+ },
157
+ request_options=request_options,
158
+ omit=OMIT,
159
+ )
160
+ try:
161
+ if 200 <= _response.status_code < 300:
162
+ _data = typing.cast(
163
+ Group,
164
+ construct_type(
165
+ type_=Group, # type: ignore
166
+ object_=_response.json(),
167
+ ),
168
+ )
169
+ return HttpResponse(response=_response, data=_data)
170
+ if _response.status_code == 422:
171
+ raise UnprocessableEntityError(
172
+ headers=dict(_response.headers),
173
+ body=typing.cast(
174
+ HttpValidationError,
175
+ construct_type(
176
+ type_=HttpValidationError, # type: ignore
177
+ object_=_response.json(),
178
+ ),
179
+ ),
180
+ )
181
+ _response_json = _response.json()
182
+ except JSONDecodeError:
183
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
184
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
185
+
186
+ def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[int]:
187
+ """
188
+ Get the count of all groups associated with a given user.
189
+
190
+ Parameters
191
+ ----------
192
+ request_options : typing.Optional[RequestOptions]
193
+ Request-specific configuration.
194
+
195
+ Returns
196
+ -------
197
+ HttpResponse[int]
198
+ Successful Response
199
+ """
200
+ _response = self._client_wrapper.httpx_client.request(
201
+ "v1/groups/count",
202
+ method="GET",
203
+ request_options=request_options,
204
+ )
205
+ try:
206
+ if 200 <= _response.status_code < 300:
207
+ _data = typing.cast(
208
+ int,
209
+ construct_type(
210
+ type_=int, # type: ignore
211
+ object_=_response.json(),
212
+ ),
213
+ )
214
+ return HttpResponse(response=_response, data=_data)
215
+ if _response.status_code == 422:
216
+ raise UnprocessableEntityError(
217
+ headers=dict(_response.headers),
218
+ body=typing.cast(
219
+ HttpValidationError,
220
+ construct_type(
221
+ type_=HttpValidationError, # type: ignore
222
+ object_=_response.json(),
223
+ ),
224
+ ),
225
+ )
226
+ _response_json = _response.json()
227
+ except JSONDecodeError:
228
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
229
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
230
+
231
+ def retrieve(
232
+ self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
233
+ ) -> HttpResponse[Group]:
234
+ """
235
+ Retrieve the group by id.
236
+
237
+ Parameters
238
+ ----------
239
+ group_id : str
240
+
241
+ request_options : typing.Optional[RequestOptions]
242
+ Request-specific configuration.
243
+
244
+ Returns
245
+ -------
246
+ HttpResponse[Group]
247
+ Successful Response
248
+ """
249
+ _response = self._client_wrapper.httpx_client.request(
250
+ f"v1/groups/{jsonable_encoder(group_id)}",
251
+ method="GET",
252
+ request_options=request_options,
253
+ )
254
+ try:
255
+ if 200 <= _response.status_code < 300:
256
+ _data = typing.cast(
257
+ Group,
258
+ construct_type(
259
+ type_=Group, # type: ignore
260
+ object_=_response.json(),
261
+ ),
262
+ )
263
+ return HttpResponse(response=_response, data=_data)
264
+ if _response.status_code == 422:
265
+ raise UnprocessableEntityError(
266
+ headers=dict(_response.headers),
267
+ body=typing.cast(
268
+ HttpValidationError,
269
+ construct_type(
270
+ type_=HttpValidationError, # type: ignore
271
+ object_=_response.json(),
272
+ ),
273
+ ),
274
+ )
275
+ _response_json = _response.json()
276
+ except JSONDecodeError:
277
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
278
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
279
+
280
+ def delete(
281
+ self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
282
+ ) -> HttpResponse[typing.Optional[typing.Any]]:
283
+ """
284
+ Delete a multi-agent group.
285
+
286
+ Parameters
287
+ ----------
288
+ group_id : str
289
+
290
+ request_options : typing.Optional[RequestOptions]
291
+ Request-specific configuration.
292
+
293
+ Returns
294
+ -------
295
+ HttpResponse[typing.Optional[typing.Any]]
296
+ Successful Response
297
+ """
298
+ _response = self._client_wrapper.httpx_client.request(
299
+ f"v1/groups/{jsonable_encoder(group_id)}",
300
+ method="DELETE",
301
+ request_options=request_options,
302
+ )
303
+ try:
304
+ if _response is None or not _response.text.strip():
305
+ return HttpResponse(response=_response, data=None)
306
+ if 200 <= _response.status_code < 300:
307
+ _data = typing.cast(
308
+ typing.Optional[typing.Any],
309
+ construct_type(
310
+ type_=typing.Optional[typing.Any], # type: ignore
311
+ object_=_response.json(),
312
+ ),
313
+ )
314
+ return HttpResponse(response=_response, data=_data)
315
+ if _response.status_code == 422:
316
+ raise UnprocessableEntityError(
317
+ headers=dict(_response.headers),
318
+ body=typing.cast(
319
+ HttpValidationError,
320
+ construct_type(
321
+ type_=HttpValidationError, # type: ignore
322
+ object_=_response.json(),
323
+ ),
324
+ ),
325
+ )
326
+ _response_json = _response.json()
327
+ except JSONDecodeError:
328
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
329
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
330
+
331
+ def modify(
332
+ self,
333
+ group_id: str,
334
+ *,
335
+ agent_ids: typing.Optional[typing.Sequence[str]] = OMIT,
336
+ description: typing.Optional[str] = OMIT,
337
+ manager_config: typing.Optional[GroupUpdateManagerConfig] = OMIT,
338
+ project_id: typing.Optional[str] = OMIT,
339
+ shared_block_ids: typing.Optional[typing.Sequence[str]] = OMIT,
340
+ request_options: typing.Optional[RequestOptions] = None,
341
+ ) -> HttpResponse[Group]:
342
+ """
343
+ Create a new multi-agent group with the specified configuration.
344
+
345
+ Parameters
346
+ ----------
347
+ group_id : str
348
+
349
+ agent_ids : typing.Optional[typing.Sequence[str]]
350
+
351
+
352
+ description : typing.Optional[str]
353
+
354
+
355
+ manager_config : typing.Optional[GroupUpdateManagerConfig]
356
+
357
+
358
+ project_id : typing.Optional[str]
359
+ The associated project id.
360
+
361
+ shared_block_ids : typing.Optional[typing.Sequence[str]]
362
+
363
+
364
+ request_options : typing.Optional[RequestOptions]
365
+ Request-specific configuration.
366
+
367
+ Returns
368
+ -------
369
+ HttpResponse[Group]
370
+ Successful Response
371
+ """
372
+ _response = self._client_wrapper.httpx_client.request(
373
+ f"v1/groups/{jsonable_encoder(group_id)}",
374
+ method="PATCH",
375
+ json={
376
+ "agent_ids": agent_ids,
377
+ "description": description,
378
+ "manager_config": convert_and_respect_annotation_metadata(
379
+ object_=manager_config, annotation=GroupUpdateManagerConfig, direction="write"
380
+ ),
381
+ "project_id": project_id,
382
+ "shared_block_ids": shared_block_ids,
383
+ },
384
+ headers={
385
+ "content-type": "application/json",
386
+ },
387
+ request_options=request_options,
388
+ omit=OMIT,
389
+ )
390
+ try:
391
+ if 200 <= _response.status_code < 300:
392
+ _data = typing.cast(
393
+ Group,
394
+ construct_type(
395
+ type_=Group, # type: ignore
396
+ object_=_response.json(),
397
+ ),
398
+ )
399
+ return HttpResponse(response=_response, data=_data)
400
+ if _response.status_code == 422:
401
+ raise UnprocessableEntityError(
402
+ headers=dict(_response.headers),
403
+ body=typing.cast(
404
+ HttpValidationError,
405
+ construct_type(
406
+ type_=HttpValidationError, # type: ignore
407
+ object_=_response.json(),
408
+ ),
409
+ ),
410
+ )
411
+ _response_json = _response.json()
412
+ except JSONDecodeError:
413
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
414
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
415
+
416
+
417
+ class AsyncRawGroupsClient:
418
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
419
+ self._client_wrapper = client_wrapper
420
+
421
+ async def list(
422
+ self,
423
+ *,
424
+ manager_type: typing.Optional[ManagerType] = None,
425
+ before: typing.Optional[str] = None,
426
+ after: typing.Optional[str] = None,
427
+ limit: typing.Optional[int] = None,
428
+ project_id: typing.Optional[str] = None,
429
+ request_options: typing.Optional[RequestOptions] = None,
430
+ ) -> AsyncHttpResponse[typing.List[Group]]:
431
+ """
432
+ Fetch all multi-agent groups matching query.
433
+
434
+ Parameters
435
+ ----------
436
+ manager_type : typing.Optional[ManagerType]
437
+ Search groups by manager type
438
+
439
+ before : typing.Optional[str]
440
+ Cursor for pagination
441
+
442
+ after : typing.Optional[str]
443
+ Cursor for pagination
444
+
445
+ limit : typing.Optional[int]
446
+ Limit for pagination
447
+
448
+ project_id : typing.Optional[str]
449
+ Search groups by project id
450
+
451
+ request_options : typing.Optional[RequestOptions]
452
+ Request-specific configuration.
453
+
454
+ Returns
455
+ -------
456
+ AsyncHttpResponse[typing.List[Group]]
457
+ Successful Response
458
+ """
459
+ _response = await self._client_wrapper.httpx_client.request(
460
+ "v1/groups/",
461
+ method="GET",
462
+ params={
463
+ "manager_type": manager_type,
464
+ "before": before,
465
+ "after": after,
466
+ "limit": limit,
467
+ "project_id": project_id,
468
+ },
469
+ request_options=request_options,
470
+ )
471
+ try:
472
+ if 200 <= _response.status_code < 300:
473
+ _data = typing.cast(
474
+ typing.List[Group],
475
+ construct_type(
476
+ type_=typing.List[Group], # type: ignore
477
+ object_=_response.json(),
478
+ ),
479
+ )
480
+ return AsyncHttpResponse(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
+ async def create(
498
+ self,
499
+ *,
500
+ agent_ids: typing.Sequence[str],
501
+ description: str,
502
+ manager_config: typing.Optional[GroupCreateManagerConfig] = OMIT,
503
+ project_id: typing.Optional[str] = OMIT,
504
+ shared_block_ids: typing.Optional[typing.Sequence[str]] = OMIT,
505
+ request_options: typing.Optional[RequestOptions] = None,
506
+ ) -> AsyncHttpResponse[Group]:
507
+ """
508
+ Create a new multi-agent group with the specified configuration.
509
+
510
+ Parameters
511
+ ----------
512
+ agent_ids : typing.Sequence[str]
513
+
514
+
515
+ description : str
516
+
517
+
518
+ manager_config : typing.Optional[GroupCreateManagerConfig]
519
+
520
+
521
+ project_id : typing.Optional[str]
522
+ The associated project id.
523
+
524
+ shared_block_ids : typing.Optional[typing.Sequence[str]]
525
+
526
+
527
+ request_options : typing.Optional[RequestOptions]
528
+ Request-specific configuration.
529
+
530
+ Returns
531
+ -------
532
+ AsyncHttpResponse[Group]
533
+ Successful Response
534
+ """
535
+ _response = await self._client_wrapper.httpx_client.request(
536
+ "v1/groups/",
537
+ method="POST",
538
+ json={
539
+ "agent_ids": agent_ids,
540
+ "description": description,
541
+ "manager_config": convert_and_respect_annotation_metadata(
542
+ object_=manager_config, annotation=GroupCreateManagerConfig, direction="write"
543
+ ),
544
+ "project_id": project_id,
545
+ "shared_block_ids": shared_block_ids,
546
+ },
547
+ headers={
548
+ "content-type": "application/json",
549
+ },
550
+ request_options=request_options,
551
+ omit=OMIT,
552
+ )
553
+ try:
554
+ if 200 <= _response.status_code < 300:
555
+ _data = typing.cast(
556
+ Group,
557
+ construct_type(
558
+ type_=Group, # type: ignore
559
+ object_=_response.json(),
560
+ ),
561
+ )
562
+ return AsyncHttpResponse(response=_response, data=_data)
563
+ if _response.status_code == 422:
564
+ raise UnprocessableEntityError(
565
+ headers=dict(_response.headers),
566
+ body=typing.cast(
567
+ HttpValidationError,
568
+ construct_type(
569
+ type_=HttpValidationError, # type: ignore
570
+ object_=_response.json(),
571
+ ),
572
+ ),
573
+ )
574
+ _response_json = _response.json()
575
+ except JSONDecodeError:
576
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
577
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
578
+
579
+ async def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> AsyncHttpResponse[int]:
580
+ """
581
+ Get the count of all groups associated with a given user.
582
+
583
+ Parameters
584
+ ----------
585
+ request_options : typing.Optional[RequestOptions]
586
+ Request-specific configuration.
587
+
588
+ Returns
589
+ -------
590
+ AsyncHttpResponse[int]
591
+ Successful Response
592
+ """
593
+ _response = await self._client_wrapper.httpx_client.request(
594
+ "v1/groups/count",
595
+ method="GET",
596
+ request_options=request_options,
597
+ )
598
+ try:
599
+ if 200 <= _response.status_code < 300:
600
+ _data = typing.cast(
601
+ int,
602
+ construct_type(
603
+ type_=int, # type: ignore
604
+ object_=_response.json(),
605
+ ),
606
+ )
607
+ return AsyncHttpResponse(response=_response, data=_data)
608
+ if _response.status_code == 422:
609
+ raise UnprocessableEntityError(
610
+ headers=dict(_response.headers),
611
+ body=typing.cast(
612
+ HttpValidationError,
613
+ construct_type(
614
+ type_=HttpValidationError, # type: ignore
615
+ object_=_response.json(),
616
+ ),
617
+ ),
618
+ )
619
+ _response_json = _response.json()
620
+ except JSONDecodeError:
621
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
622
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
623
+
624
+ async def retrieve(
625
+ self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
626
+ ) -> AsyncHttpResponse[Group]:
627
+ """
628
+ Retrieve the group by id.
629
+
630
+ Parameters
631
+ ----------
632
+ group_id : str
633
+
634
+ request_options : typing.Optional[RequestOptions]
635
+ Request-specific configuration.
636
+
637
+ Returns
638
+ -------
639
+ AsyncHttpResponse[Group]
640
+ Successful Response
641
+ """
642
+ _response = await self._client_wrapper.httpx_client.request(
643
+ f"v1/groups/{jsonable_encoder(group_id)}",
644
+ method="GET",
645
+ request_options=request_options,
646
+ )
647
+ try:
648
+ if 200 <= _response.status_code < 300:
649
+ _data = typing.cast(
650
+ Group,
651
+ construct_type(
652
+ type_=Group, # type: ignore
653
+ object_=_response.json(),
654
+ ),
655
+ )
656
+ return AsyncHttpResponse(response=_response, data=_data)
657
+ if _response.status_code == 422:
658
+ raise UnprocessableEntityError(
659
+ headers=dict(_response.headers),
660
+ body=typing.cast(
661
+ HttpValidationError,
662
+ construct_type(
663
+ type_=HttpValidationError, # type: ignore
664
+ object_=_response.json(),
665
+ ),
666
+ ),
667
+ )
668
+ _response_json = _response.json()
669
+ except JSONDecodeError:
670
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
671
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
672
+
673
+ async def delete(
674
+ self, group_id: str, *, request_options: typing.Optional[RequestOptions] = None
675
+ ) -> AsyncHttpResponse[typing.Optional[typing.Any]]:
676
+ """
677
+ Delete a multi-agent group.
678
+
679
+ Parameters
680
+ ----------
681
+ group_id : str
682
+
683
+ request_options : typing.Optional[RequestOptions]
684
+ Request-specific configuration.
685
+
686
+ Returns
687
+ -------
688
+ AsyncHttpResponse[typing.Optional[typing.Any]]
689
+ Successful Response
690
+ """
691
+ _response = await self._client_wrapper.httpx_client.request(
692
+ f"v1/groups/{jsonable_encoder(group_id)}",
693
+ method="DELETE",
694
+ request_options=request_options,
695
+ )
696
+ try:
697
+ if _response is None or not _response.text.strip():
698
+ return AsyncHttpResponse(response=_response, data=None)
699
+ if 200 <= _response.status_code < 300:
700
+ _data = typing.cast(
701
+ typing.Optional[typing.Any],
702
+ construct_type(
703
+ type_=typing.Optional[typing.Any], # type: ignore
704
+ object_=_response.json(),
705
+ ),
706
+ )
707
+ return AsyncHttpResponse(response=_response, data=_data)
708
+ if _response.status_code == 422:
709
+ raise UnprocessableEntityError(
710
+ headers=dict(_response.headers),
711
+ body=typing.cast(
712
+ HttpValidationError,
713
+ construct_type(
714
+ type_=HttpValidationError, # type: ignore
715
+ object_=_response.json(),
716
+ ),
717
+ ),
718
+ )
719
+ _response_json = _response.json()
720
+ except JSONDecodeError:
721
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
722
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
723
+
724
+ async def modify(
725
+ self,
726
+ group_id: str,
727
+ *,
728
+ agent_ids: typing.Optional[typing.Sequence[str]] = OMIT,
729
+ description: typing.Optional[str] = OMIT,
730
+ manager_config: typing.Optional[GroupUpdateManagerConfig] = OMIT,
731
+ project_id: typing.Optional[str] = OMIT,
732
+ shared_block_ids: typing.Optional[typing.Sequence[str]] = OMIT,
733
+ request_options: typing.Optional[RequestOptions] = None,
734
+ ) -> AsyncHttpResponse[Group]:
735
+ """
736
+ Create a new multi-agent group with the specified configuration.
737
+
738
+ Parameters
739
+ ----------
740
+ group_id : str
741
+
742
+ agent_ids : typing.Optional[typing.Sequence[str]]
743
+
744
+
745
+ description : typing.Optional[str]
746
+
747
+
748
+ manager_config : typing.Optional[GroupUpdateManagerConfig]
749
+
750
+
751
+ project_id : typing.Optional[str]
752
+ The associated project id.
753
+
754
+ shared_block_ids : typing.Optional[typing.Sequence[str]]
755
+
756
+
757
+ request_options : typing.Optional[RequestOptions]
758
+ Request-specific configuration.
759
+
760
+ Returns
761
+ -------
762
+ AsyncHttpResponse[Group]
763
+ Successful Response
764
+ """
765
+ _response = await self._client_wrapper.httpx_client.request(
766
+ f"v1/groups/{jsonable_encoder(group_id)}",
767
+ method="PATCH",
768
+ json={
769
+ "agent_ids": agent_ids,
770
+ "description": description,
771
+ "manager_config": convert_and_respect_annotation_metadata(
772
+ object_=manager_config, annotation=GroupUpdateManagerConfig, direction="write"
773
+ ),
774
+ "project_id": project_id,
775
+ "shared_block_ids": shared_block_ids,
776
+ },
777
+ headers={
778
+ "content-type": "application/json",
779
+ },
780
+ request_options=request_options,
781
+ omit=OMIT,
782
+ )
783
+ try:
784
+ if 200 <= _response.status_code < 300:
785
+ _data = typing.cast(
786
+ Group,
787
+ construct_type(
788
+ type_=Group, # type: ignore
789
+ object_=_response.json(),
790
+ ),
791
+ )
792
+ return AsyncHttpResponse(response=_response, data=_data)
793
+ if _response.status_code == 422:
794
+ raise UnprocessableEntityError(
795
+ headers=dict(_response.headers),
796
+ body=typing.cast(
797
+ HttpValidationError,
798
+ construct_type(
799
+ type_=HttpValidationError, # type: ignore
800
+ object_=_response.json(),
801
+ ),
802
+ ),
803
+ )
804
+ _response_json = _response.json()
805
+ except JSONDecodeError:
806
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
807
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)