letta-client 0.1.318__py3-none-any.whl → 0.1.320__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of letta-client might be problematic. Click here for more details.

Files changed (211) hide show
  1. letta_client/__init__.py +51 -9
  2. letta_client/agents/__init__.py +6 -2
  3. letta_client/agents/client.py +50 -213
  4. letta_client/agents/files/client.py +51 -6
  5. letta_client/agents/files/raw_client.py +94 -9
  6. letta_client/agents/messages/__init__.py +2 -2
  7. letta_client/agents/messages/client.py +116 -26
  8. letta_client/agents/messages/raw_client.py +121 -19
  9. letta_client/agents/messages/types/__init__.py +2 -2
  10. letta_client/agents/messages/types/{messages_preview_raw_payload_request.py → messages_preview_request.py} +1 -1
  11. letta_client/agents/raw_client.py +50 -253
  12. letta_client/agents/types/__init__.py +4 -0
  13. letta_client/agents/types/agents_list_request_order.py +5 -0
  14. letta_client/agents/types/agents_list_request_order_by.py +5 -0
  15. letta_client/archives/__init__.py +7 -0
  16. letta_client/archives/client.py +362 -0
  17. letta_client/archives/raw_client.py +448 -0
  18. letta_client/archives/types/__init__.py +7 -0
  19. letta_client/archives/types/list_archives_request_order.py +5 -0
  20. letta_client/base_client.py +3 -6
  21. letta_client/batches/__init__.py +5 -0
  22. letta_client/batches/client.py +68 -8
  23. letta_client/batches/messages/__init__.py +7 -0
  24. letta_client/{messages → batches/messages}/client.py +50 -43
  25. letta_client/{messages → batches/messages}/raw_client.py +52 -45
  26. letta_client/batches/messages/types/__init__.py +7 -0
  27. letta_client/batches/messages/types/messages_list_request_order.py +5 -0
  28. letta_client/batches/raw_client.py +71 -6
  29. letta_client/batches/types/__init__.py +7 -0
  30. letta_client/batches/types/batches_list_request_order.py +5 -0
  31. letta_client/blocks/__init__.py +3 -1
  32. letta_client/blocks/agents/__init__.py +3 -0
  33. letta_client/blocks/agents/client.py +57 -2
  34. letta_client/blocks/agents/raw_client.py +51 -0
  35. letta_client/blocks/agents/types/__init__.py +7 -0
  36. letta_client/blocks/agents/types/agents_list_request_order.py +5 -0
  37. letta_client/blocks/client.py +25 -4
  38. letta_client/blocks/raw_client.py +25 -4
  39. letta_client/blocks/types/__init__.py +7 -0
  40. letta_client/blocks/types/blocks_list_request_order.py +5 -0
  41. letta_client/core/client_wrapper.py +2 -2
  42. letta_client/errors/__init__.py +9 -1
  43. letta_client/errors/internal_server_error.py +10 -0
  44. letta_client/folders/__init__.py +14 -2
  45. letta_client/folders/agents/__init__.py +7 -0
  46. letta_client/folders/agents/client.py +176 -0
  47. letta_client/folders/agents/raw_client.py +182 -0
  48. letta_client/folders/agents/types/__init__.py +7 -0
  49. letta_client/folders/agents/types/agents_list_request_order.py +5 -0
  50. letta_client/folders/client.py +96 -86
  51. letta_client/folders/files/__init__.py +3 -0
  52. letta_client/folders/files/client.py +49 -10
  53. letta_client/folders/files/raw_client.py +41 -10
  54. letta_client/folders/files/types/__init__.py +7 -0
  55. letta_client/folders/files/types/files_list_request_order.py +5 -0
  56. letta_client/folders/passages/__init__.py +3 -0
  57. letta_client/folders/passages/client.py +43 -14
  58. letta_client/folders/passages/raw_client.py +35 -14
  59. letta_client/folders/passages/types/__init__.py +7 -0
  60. letta_client/folders/passages/types/passages_list_request_order.py +5 -0
  61. letta_client/folders/raw_client.py +83 -104
  62. letta_client/folders/types/__init__.py +7 -0
  63. letta_client/folders/types/folders_list_request_order.py +5 -0
  64. letta_client/groups/__init__.py +4 -2
  65. letta_client/groups/client.py +27 -6
  66. letta_client/groups/messages/__init__.py +2 -2
  67. letta_client/groups/messages/client.py +39 -18
  68. letta_client/groups/messages/raw_client.py +35 -14
  69. letta_client/groups/messages/types/__init__.py +2 -1
  70. letta_client/groups/messages/types/messages_list_request_order.py +5 -0
  71. letta_client/groups/raw_client.py +27 -6
  72. letta_client/groups/types/__init__.py +2 -1
  73. letta_client/groups/types/groups_list_request_order.py +5 -0
  74. letta_client/identities/__init__.py +12 -2
  75. letta_client/identities/agents/__init__.py +7 -0
  76. letta_client/identities/agents/client.py +177 -0
  77. letta_client/identities/agents/raw_client.py +183 -0
  78. letta_client/identities/agents/types/__init__.py +7 -0
  79. letta_client/identities/agents/types/agents_list_request_order.py +5 -0
  80. letta_client/identities/blocks/__init__.py +7 -0
  81. letta_client/identities/blocks/client.py +177 -0
  82. letta_client/identities/blocks/raw_client.py +183 -0
  83. letta_client/identities/blocks/types/__init__.py +7 -0
  84. letta_client/identities/blocks/types/blocks_list_request_order.py +5 -0
  85. letta_client/identities/client.py +37 -0
  86. letta_client/identities/raw_client.py +27 -0
  87. letta_client/identities/types/__init__.py +7 -0
  88. letta_client/identities/types/identities_list_request_order.py +5 -0
  89. letta_client/jobs/client.py +10 -2
  90. letta_client/jobs/raw_client.py +10 -2
  91. letta_client/models/__init__.py +3 -0
  92. letta_client/models/client.py +3 -0
  93. letta_client/{embedding_models → models/embeddings}/client.py +14 -14
  94. letta_client/{embedding_models → models/embeddings}/raw_client.py +10 -10
  95. letta_client/providers/__init__.py +3 -0
  96. letta_client/providers/client.py +151 -82
  97. letta_client/providers/raw_client.py +165 -72
  98. letta_client/providers/types/__init__.py +7 -0
  99. letta_client/providers/types/providers_list_request_order.py +5 -0
  100. letta_client/runs/__init__.py +2 -1
  101. letta_client/runs/client.py +21 -0
  102. letta_client/runs/messages/__init__.py +3 -0
  103. letta_client/runs/messages/client.py +15 -49
  104. letta_client/runs/messages/raw_client.py +13 -49
  105. letta_client/runs/messages/types/__init__.py +7 -0
  106. letta_client/runs/messages/types/messages_list_request_order.py +5 -0
  107. letta_client/runs/raw_client.py +21 -0
  108. letta_client/steps/__init__.py +13 -3
  109. letta_client/steps/client.py +32 -83
  110. letta_client/steps/feedback/client.py +21 -6
  111. letta_client/steps/feedback/raw_client.py +29 -6
  112. letta_client/steps/messages/__init__.py +7 -0
  113. letta_client/steps/messages/client.py +177 -0
  114. letta_client/steps/messages/raw_client.py +183 -0
  115. letta_client/steps/messages/types/__init__.py +8 -0
  116. letta_client/steps/messages/types/messages_list_request_order.py +5 -0
  117. letta_client/steps/messages/types/messages_list_response_item.py +25 -0
  118. letta_client/steps/metrics/client.py +110 -0
  119. letta_client/steps/metrics/raw_client.py +122 -0
  120. letta_client/steps/raw_client.py +17 -107
  121. letta_client/steps/trace/__init__.py +4 -0
  122. letta_client/steps/trace/client.py +110 -0
  123. letta_client/steps/trace/raw_client.py +122 -0
  124. letta_client/steps/types/__init__.py +2 -1
  125. letta_client/steps/types/steps_list_request_order.py +5 -0
  126. letta_client/tags/__init__.py +3 -0
  127. letta_client/tags/client.py +57 -4
  128. letta_client/tags/raw_client.py +49 -2
  129. letta_client/tags/types/__init__.py +7 -0
  130. letta_client/tags/types/tags_list_request_order.py +5 -0
  131. letta_client/telemetry/client.py +8 -0
  132. letta_client/telemetry/raw_client.py +8 -0
  133. letta_client/templates/__init__.py +64 -0
  134. letta_client/templates/agents/__init__.py +58 -0
  135. letta_client/templates/agents/types/__init__.py +66 -0
  136. letta_client/templates/agents/types/agents_create_response.py +6 -0
  137. letta_client/templates/agents/types/agents_create_response_group.py +52 -0
  138. letta_client/templates/agents/types/agents_create_response_group_base_template_id.py +12 -0
  139. letta_client/templates/agents/types/agents_create_response_group_base_template_id_item.py +5 -0
  140. letta_client/templates/agents/types/agents_create_response_group_deployment_id.py +12 -0
  141. letta_client/templates/agents/types/agents_create_response_group_deployment_id_item.py +5 -0
  142. letta_client/templates/agents/types/agents_create_response_group_hidden.py +12 -0
  143. letta_client/templates/agents/types/agents_create_response_group_hidden_item.py +5 -0
  144. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id.py +14 -0
  145. letta_client/templates/agents/types/agents_create_response_group_last_processed_message_id_item.py +5 -0
  146. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id.py +12 -0
  147. letta_client/templates/agents/types/agents_create_response_group_manager_agent_id_item.py +5 -0
  148. letta_client/templates/agents/types/agents_create_response_group_manager_type.py +7 -0
  149. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length.py +14 -0
  150. letta_client/templates/agents/types/agents_create_response_group_max_message_buffer_length_item.py +5 -0
  151. letta_client/templates/agents/types/agents_create_response_group_max_turns.py +12 -0
  152. letta_client/templates/agents/types/agents_create_response_group_max_turns_item.py +5 -0
  153. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length.py +14 -0
  154. letta_client/templates/agents/types/agents_create_response_group_min_message_buffer_length_item.py +5 -0
  155. letta_client/templates/agents/types/agents_create_response_group_project_id.py +12 -0
  156. letta_client/templates/agents/types/agents_create_response_group_project_id_item.py +5 -0
  157. letta_client/templates/agents/types/agents_create_response_group_shared_block_ids.py +5 -0
  158. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency.py +14 -0
  159. letta_client/templates/agents/types/agents_create_response_group_sleeptime_agent_frequency_item.py +5 -0
  160. letta_client/templates/agents/types/agents_create_response_group_template_id.py +12 -0
  161. letta_client/templates/agents/types/agents_create_response_group_template_id_item.py +5 -0
  162. letta_client/templates/agents/types/agents_create_response_group_termination_token.py +12 -0
  163. letta_client/templates/agents/types/agents_create_response_group_termination_token_item.py +5 -0
  164. letta_client/templates/agents/types/agents_create_response_group_turns_counter.py +12 -0
  165. letta_client/templates/agents/types/agents_create_response_group_turns_counter_item.py +5 -0
  166. letta_client/templates/client.py +260 -0
  167. letta_client/templates/raw_client.py +395 -0
  168. letta_client/templates/types/__init__.py +8 -0
  169. letta_client/templates/types/templates_get_template_snapshot_response.py +4 -0
  170. letta_client/templates/types/templates_get_template_snapshot_response_blocks_item.py +1 -0
  171. letta_client/templates/types/templates_get_template_snapshot_response_relationships_item.py +23 -0
  172. letta_client/templates/types/templates_migrate_deployment_response.py +21 -0
  173. letta_client/templates/types/templates_set_current_template_from_snapshot_response.py +21 -0
  174. letta_client/tools/__init__.py +2 -0
  175. letta_client/tools/client.py +47 -20
  176. letta_client/tools/raw_client.py +43 -26
  177. letta_client/tools/types/__init__.py +2 -0
  178. letta_client/tools/types/tools_list_request_order.py +5 -0
  179. letta_client/types/__init__.py +10 -2
  180. letta_client/types/agent_state.py +5 -0
  181. letta_client/types/archive.py +77 -0
  182. letta_client/types/batch_job.py +6 -0
  183. letta_client/types/{body_export_agent_serialized.py → body_export_agent.py} +1 -1
  184. letta_client/types/child_tool_rule.py +1 -1
  185. letta_client/types/conditional_tool_rule.py +1 -1
  186. letta_client/types/continue_tool_rule.py +1 -1
  187. letta_client/types/deployment_entity.py +2 -0
  188. letta_client/types/init_tool_rule.py +1 -1
  189. letta_client/types/internal_server_error_body.py +20 -0
  190. letta_client/types/internal_template_agent_create.py +5 -0
  191. letta_client/types/job.py +6 -0
  192. letta_client/types/letta_schemas_agent_file_agent_schema.py +5 -0
  193. letta_client/types/max_count_per_step_tool_rule.py +1 -1
  194. letta_client/types/memory.py +7 -1
  195. letta_client/types/memory_agent_type.py +7 -0
  196. letta_client/types/parent_tool_rule.py +1 -1
  197. letta_client/types/required_before_exit_tool_rule.py +1 -1
  198. letta_client/types/requires_approval_tool_rule.py +1 -1
  199. letta_client/types/run.py +6 -0
  200. letta_client/types/source.py +6 -0
  201. letta_client/types/step.py +1 -1
  202. letta_client/types/stop_reason_type.py +1 -0
  203. letta_client/types/terminal_tool_rule.py +1 -1
  204. letta_client/types/vector_db_provider.py +5 -0
  205. letta_client/voice/client.py +2 -8
  206. letta_client/voice/raw_client.py +0 -8
  207. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/METADATA +9 -9
  208. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/RECORD +211 -114
  209. /letta_client/{embedding_models → models/embeddings}/__init__.py +0 -0
  210. /letta_client/{messages → steps/metrics}/__init__.py +0 -0
  211. {letta_client-0.1.318.dist-info → letta_client-0.1.320.dist-info}/WHEEL +0 -0
@@ -12,7 +12,7 @@ from ...core.unchecked_base_model import construct_type
12
12
  from ...errors.unprocessable_entity_error import UnprocessableEntityError
13
13
  from ...types.http_validation_error import HttpValidationError
14
14
  from ...types.letta_message_union import LettaMessageUnion
15
- from ...types.message_role import MessageRole
15
+ from .types.messages_list_request_order import MessagesListRequestOrder
16
16
 
17
17
 
18
18
  class RawMessagesClient:
@@ -26,44 +26,27 @@ class RawMessagesClient:
26
26
  before: typing.Optional[str] = None,
27
27
  after: typing.Optional[str] = None,
28
28
  limit: typing.Optional[int] = None,
29
- order: typing.Optional[str] = None,
30
- role: typing.Optional[MessageRole] = None,
29
+ order: typing.Optional[MessagesListRequestOrder] = None,
31
30
  request_options: typing.Optional[RequestOptions] = None,
32
31
  ) -> HttpResponse[typing.List[LettaMessageUnion]]:
33
32
  """
34
- Get messages associated with a run with filtering options.
35
-
36
- Args:
37
- run_id: ID of the run
38
- before: A cursor for use in pagination. `before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
39
- after: A cursor for use in pagination. `after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
40
- limit: Maximum number of messages to return
41
- order: Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order.
42
- role: Filter by role (user/assistant/system/tool)
43
- return_message_object: Whether to return Message objects or LettaMessage objects
44
- user_id: ID of the user making the request
45
-
46
- Returns:
47
- A list of messages associated with the run. Default is List[LettaMessage].
33
+ Get response messages associated with a run.
48
34
 
49
35
  Parameters
50
36
  ----------
51
37
  run_id : str
52
38
 
53
39
  before : typing.Optional[str]
54
- Cursor for pagination
40
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
55
41
 
56
42
  after : typing.Optional[str]
57
- Cursor for pagination
43
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
58
44
 
59
45
  limit : typing.Optional[int]
60
46
  Maximum number of messages to return
61
47
 
62
- order : typing.Optional[str]
63
- Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order.
64
-
65
- role : typing.Optional[MessageRole]
66
- Filter by role
48
+ order : typing.Optional[MessagesListRequestOrder]
49
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
67
50
 
68
51
  request_options : typing.Optional[RequestOptions]
69
52
  Request-specific configuration.
@@ -81,7 +64,6 @@ class RawMessagesClient:
81
64
  "after": after,
82
65
  "limit": limit,
83
66
  "order": order,
84
- "role": role,
85
67
  },
86
68
  request_options=request_options,
87
69
  )
@@ -123,44 +105,27 @@ class AsyncRawMessagesClient:
123
105
  before: typing.Optional[str] = None,
124
106
  after: typing.Optional[str] = None,
125
107
  limit: typing.Optional[int] = None,
126
- order: typing.Optional[str] = None,
127
- role: typing.Optional[MessageRole] = None,
108
+ order: typing.Optional[MessagesListRequestOrder] = None,
128
109
  request_options: typing.Optional[RequestOptions] = None,
129
110
  ) -> AsyncHttpResponse[typing.List[LettaMessageUnion]]:
130
111
  """
131
- Get messages associated with a run with filtering options.
132
-
133
- Args:
134
- run_id: ID of the run
135
- before: A cursor for use in pagination. `before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.
136
- after: A cursor for use in pagination. `after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.
137
- limit: Maximum number of messages to return
138
- order: Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order.
139
- role: Filter by role (user/assistant/system/tool)
140
- return_message_object: Whether to return Message objects or LettaMessage objects
141
- user_id: ID of the user making the request
142
-
143
- Returns:
144
- A list of messages associated with the run. Default is List[LettaMessage].
112
+ Get response messages associated with a run.
145
113
 
146
114
  Parameters
147
115
  ----------
148
116
  run_id : str
149
117
 
150
118
  before : typing.Optional[str]
151
- Cursor for pagination
119
+ Message ID cursor for pagination. Returns messages that come before this message ID in the specified sort order
152
120
 
153
121
  after : typing.Optional[str]
154
- Cursor for pagination
122
+ Message ID cursor for pagination. Returns messages that come after this message ID in the specified sort order
155
123
 
156
124
  limit : typing.Optional[int]
157
125
  Maximum number of messages to return
158
126
 
159
- order : typing.Optional[str]
160
- Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order.
161
-
162
- role : typing.Optional[MessageRole]
163
- Filter by role
127
+ order : typing.Optional[MessagesListRequestOrder]
128
+ Sort order for messages by creation time. 'asc' for oldest first, 'desc' for newest first
164
129
 
165
130
  request_options : typing.Optional[RequestOptions]
166
131
  Request-specific configuration.
@@ -178,7 +143,6 @@ class AsyncRawMessagesClient:
178
143
  "after": after,
179
144
  "limit": limit,
180
145
  "order": order,
181
- "role": role,
182
146
  },
183
147
  request_options=request_options,
184
148
  )
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .messages_list_request_order import MessagesListRequestOrder
6
+
7
+ __all__ = ["MessagesListRequestOrder"]
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ import typing
4
+
5
+ MessagesListRequestOrder = typing.Union[typing.Literal["asc", "desc"], typing.Any]
@@ -15,6 +15,7 @@ from ..core.unchecked_base_model import construct_type
15
15
  from ..errors.unprocessable_entity_error import UnprocessableEntityError
16
16
  from ..types.http_validation_error import HttpValidationError
17
17
  from ..types.run import Run
18
+ from ..types.stop_reason_type import StopReasonType
18
19
  from .types.letta_streaming_response import LettaStreamingResponse
19
20
 
20
21
  # this is used as the default value for optional parameters
@@ -30,9 +31,11 @@ class RawRunsClient:
30
31
  *,
31
32
  agent_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
32
33
  background: typing.Optional[bool] = None,
34
+ stop_reason: typing.Optional[StopReasonType] = None,
33
35
  after: typing.Optional[str] = None,
34
36
  before: typing.Optional[str] = None,
35
37
  limit: typing.Optional[int] = None,
38
+ active: typing.Optional[bool] = None,
36
39
  ascending: typing.Optional[bool] = None,
37
40
  request_options: typing.Optional[RequestOptions] = None,
38
41
  ) -> HttpResponse[typing.List[Run]]:
@@ -47,6 +50,9 @@ class RawRunsClient:
47
50
  background : typing.Optional[bool]
48
51
  If True, filters for runs that were created in background mode.
49
52
 
53
+ stop_reason : typing.Optional[StopReasonType]
54
+ Filter runs by stop reason.
55
+
50
56
  after : typing.Optional[str]
51
57
  Cursor for pagination
52
58
 
@@ -56,6 +62,9 @@ class RawRunsClient:
56
62
  limit : typing.Optional[int]
57
63
  Maximum number of runs to return
58
64
 
65
+ active : typing.Optional[bool]
66
+ Filter for active runs.
67
+
59
68
  ascending : typing.Optional[bool]
60
69
  Whether to sort agents oldest to newest (True) or newest to oldest (False, default)
61
70
 
@@ -73,9 +82,11 @@ class RawRunsClient:
73
82
  params={
74
83
  "agent_ids": agent_ids,
75
84
  "background": background,
85
+ "stop_reason": stop_reason,
76
86
  "after": after,
77
87
  "before": before,
78
88
  "limit": limit,
89
+ "active": active,
79
90
  "ascending": ascending,
80
91
  },
81
92
  request_options=request_options,
@@ -366,9 +377,11 @@ class AsyncRawRunsClient:
366
377
  *,
367
378
  agent_ids: typing.Optional[typing.Union[str, typing.Sequence[str]]] = None,
368
379
  background: typing.Optional[bool] = None,
380
+ stop_reason: typing.Optional[StopReasonType] = None,
369
381
  after: typing.Optional[str] = None,
370
382
  before: typing.Optional[str] = None,
371
383
  limit: typing.Optional[int] = None,
384
+ active: typing.Optional[bool] = None,
372
385
  ascending: typing.Optional[bool] = None,
373
386
  request_options: typing.Optional[RequestOptions] = None,
374
387
  ) -> AsyncHttpResponse[typing.List[Run]]:
@@ -383,6 +396,9 @@ class AsyncRawRunsClient:
383
396
  background : typing.Optional[bool]
384
397
  If True, filters for runs that were created in background mode.
385
398
 
399
+ stop_reason : typing.Optional[StopReasonType]
400
+ Filter runs by stop reason.
401
+
386
402
  after : typing.Optional[str]
387
403
  Cursor for pagination
388
404
 
@@ -392,6 +408,9 @@ class AsyncRawRunsClient:
392
408
  limit : typing.Optional[int]
393
409
  Maximum number of runs to return
394
410
 
411
+ active : typing.Optional[bool]
412
+ Filter for active runs.
413
+
395
414
  ascending : typing.Optional[bool]
396
415
  Whether to sort agents oldest to newest (True) or newest to oldest (False, default)
397
416
 
@@ -409,9 +428,11 @@ class AsyncRawRunsClient:
409
428
  params={
410
429
  "agent_ids": agent_ids,
411
430
  "background": background,
431
+ "stop_reason": stop_reason,
412
432
  "after": after,
413
433
  "before": before,
414
434
  "limit": limit,
435
+ "active": active,
415
436
  "ascending": ascending,
416
437
  },
417
438
  request_options=request_options,
@@ -2,7 +2,17 @@
2
2
 
3
3
  # isort: skip_file
4
4
 
5
- from .types import StepsListRequestFeedback
6
- from . import feedback
5
+ from .types import StepsListRequestFeedback, StepsListRequestOrder
6
+ from . import feedback, messages, metrics, trace
7
+ from .messages import MessagesListRequestOrder, MessagesListResponseItem
7
8
 
8
- __all__ = ["StepsListRequestFeedback", "feedback"]
9
+ __all__ = [
10
+ "MessagesListRequestOrder",
11
+ "MessagesListResponseItem",
12
+ "StepsListRequestFeedback",
13
+ "StepsListRequestOrder",
14
+ "feedback",
15
+ "messages",
16
+ "metrics",
17
+ "trace",
18
+ ]
@@ -5,17 +5,26 @@ import typing
5
5
  from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
6
6
  from ..core.request_options import RequestOptions
7
7
  from ..types.step import Step
8
- from ..types.step_metrics import StepMetrics
9
8
  from .feedback.client import AsyncFeedbackClient, FeedbackClient
9
+ from .messages.client import AsyncMessagesClient, MessagesClient
10
+ from .metrics.client import AsyncMetricsClient, MetricsClient
10
11
  from .raw_client import AsyncRawStepsClient, RawStepsClient
12
+ from .trace.client import AsyncTraceClient, TraceClient
11
13
  from .types.steps_list_request_feedback import StepsListRequestFeedback
14
+ from .types.steps_list_request_order import StepsListRequestOrder
12
15
 
13
16
 
14
17
  class StepsClient:
15
18
  def __init__(self, *, client_wrapper: SyncClientWrapper):
16
19
  self._raw_client = RawStepsClient(client_wrapper=client_wrapper)
20
+ self.metrics = MetricsClient(client_wrapper=client_wrapper)
21
+
22
+ self.trace = TraceClient(client_wrapper=client_wrapper)
23
+
17
24
  self.feedback = FeedbackClient(client_wrapper=client_wrapper)
18
25
 
26
+ self.messages = MessagesClient(client_wrapper=client_wrapper)
27
+
19
28
  @property
20
29
  def with_raw_response(self) -> RawStepsClient:
21
30
  """
@@ -33,7 +42,8 @@ class StepsClient:
33
42
  before: typing.Optional[str] = None,
34
43
  after: typing.Optional[str] = None,
35
44
  limit: typing.Optional[int] = None,
36
- order: typing.Optional[str] = None,
45
+ order: typing.Optional[StepsListRequestOrder] = None,
46
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
37
47
  start_date: typing.Optional[str] = None,
38
48
  end_date: typing.Optional[str] = None,
39
49
  model: typing.Optional[str] = None,
@@ -47,7 +57,6 @@ class StepsClient:
47
57
  ) -> typing.List[Step]:
48
58
  """
49
59
  List steps with optional pagination and date filters.
50
- Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
51
60
 
52
61
  Parameters
53
62
  ----------
@@ -60,8 +69,11 @@ class StepsClient:
60
69
  limit : typing.Optional[int]
61
70
  Maximum number of steps to return
62
71
 
63
- order : typing.Optional[str]
64
- Sort order (asc or desc)
72
+ order : typing.Optional[StepsListRequestOrder]
73
+ Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
74
+
75
+ order_by : typing.Optional[typing.Literal["created_at"]]
76
+ Field to sort by
65
77
 
66
78
  start_date : typing.Optional[str]
67
79
  Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
@@ -113,6 +125,7 @@ class StepsClient:
113
125
  after=after,
114
126
  limit=limit,
115
127
  order=order,
128
+ order_by=order_by,
116
129
  start_date=start_date,
117
130
  end_date=end_date,
118
131
  model=model,
@@ -157,45 +170,18 @@ class StepsClient:
157
170
  _response = self._raw_client.retrieve(step_id, request_options=request_options)
158
171
  return _response.data
159
172
 
160
- def retrieve_step_metrics(
161
- self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
162
- ) -> StepMetrics:
163
- """
164
- Get step metrics by step ID.
165
-
166
- Parameters
167
- ----------
168
- step_id : str
169
-
170
- request_options : typing.Optional[RequestOptions]
171
- Request-specific configuration.
172
-
173
- Returns
174
- -------
175
- StepMetrics
176
- Successful Response
177
-
178
- Examples
179
- --------
180
- from letta_client import Letta
181
-
182
- client = Letta(
183
- project="YOUR_PROJECT",
184
- token="YOUR_TOKEN",
185
- )
186
- client.steps.retrieve_step_metrics(
187
- step_id="step_id",
188
- )
189
- """
190
- _response = self._raw_client.retrieve_step_metrics(step_id, request_options=request_options)
191
- return _response.data
192
-
193
173
 
194
174
  class AsyncStepsClient:
195
175
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
196
176
  self._raw_client = AsyncRawStepsClient(client_wrapper=client_wrapper)
177
+ self.metrics = AsyncMetricsClient(client_wrapper=client_wrapper)
178
+
179
+ self.trace = AsyncTraceClient(client_wrapper=client_wrapper)
180
+
197
181
  self.feedback = AsyncFeedbackClient(client_wrapper=client_wrapper)
198
182
 
183
+ self.messages = AsyncMessagesClient(client_wrapper=client_wrapper)
184
+
199
185
  @property
200
186
  def with_raw_response(self) -> AsyncRawStepsClient:
201
187
  """
@@ -213,7 +199,8 @@ class AsyncStepsClient:
213
199
  before: typing.Optional[str] = None,
214
200
  after: typing.Optional[str] = None,
215
201
  limit: typing.Optional[int] = None,
216
- order: typing.Optional[str] = None,
202
+ order: typing.Optional[StepsListRequestOrder] = None,
203
+ order_by: typing.Optional[typing.Literal["created_at"]] = None,
217
204
  start_date: typing.Optional[str] = None,
218
205
  end_date: typing.Optional[str] = None,
219
206
  model: typing.Optional[str] = None,
@@ -227,7 +214,6 @@ class AsyncStepsClient:
227
214
  ) -> typing.List[Step]:
228
215
  """
229
216
  List steps with optional pagination and date filters.
230
- Dates should be provided in ISO 8601 format (e.g. 2025-01-29T15:01:19-08:00)
231
217
 
232
218
  Parameters
233
219
  ----------
@@ -240,8 +226,11 @@ class AsyncStepsClient:
240
226
  limit : typing.Optional[int]
241
227
  Maximum number of steps to return
242
228
 
243
- order : typing.Optional[str]
244
- Sort order (asc or desc)
229
+ order : typing.Optional[StepsListRequestOrder]
230
+ Sort order for steps by creation time. 'asc' for oldest first, 'desc' for newest first
231
+
232
+ order_by : typing.Optional[typing.Literal["created_at"]]
233
+ Field to sort by
245
234
 
246
235
  start_date : typing.Optional[str]
247
236
  Return steps after this ISO datetime (e.g. "2025-01-29T15:01:19-08:00")
@@ -301,6 +290,7 @@ class AsyncStepsClient:
301
290
  after=after,
302
291
  limit=limit,
303
292
  order=order,
293
+ order_by=order_by,
304
294
  start_date=start_date,
305
295
  end_date=end_date,
306
296
  model=model,
@@ -352,44 +342,3 @@ class AsyncStepsClient:
352
342
  """
353
343
  _response = await self._raw_client.retrieve(step_id, request_options=request_options)
354
344
  return _response.data
355
-
356
- async def retrieve_step_metrics(
357
- self, step_id: str, *, request_options: typing.Optional[RequestOptions] = None
358
- ) -> StepMetrics:
359
- """
360
- Get step metrics by step ID.
361
-
362
- Parameters
363
- ----------
364
- step_id : str
365
-
366
- request_options : typing.Optional[RequestOptions]
367
- Request-specific configuration.
368
-
369
- Returns
370
- -------
371
- StepMetrics
372
- Successful Response
373
-
374
- Examples
375
- --------
376
- import asyncio
377
-
378
- from letta_client import AsyncLetta
379
-
380
- client = AsyncLetta(
381
- project="YOUR_PROJECT",
382
- token="YOUR_TOKEN",
383
- )
384
-
385
-
386
- async def main() -> None:
387
- await client.steps.retrieve_step_metrics(
388
- step_id="step_id",
389
- )
390
-
391
-
392
- asyncio.run(main())
393
- """
394
- _response = await self._raw_client.retrieve_step_metrics(step_id, request_options=request_options)
395
- return _response.data
@@ -8,6 +8,9 @@ from ...types.feedback_type import FeedbackType
8
8
  from ...types.step import Step
9
9
  from .raw_client import AsyncRawFeedbackClient, RawFeedbackClient
10
10
 
11
+ # this is used as the default value for optional parameters
12
+ OMIT = typing.cast(typing.Any, ...)
13
+
11
14
 
12
15
  class FeedbackClient:
13
16
  def __init__(self, *, client_wrapper: SyncClientWrapper):
@@ -28,17 +31,22 @@ class FeedbackClient:
28
31
  self,
29
32
  step_id: str,
30
33
  *,
31
- feedback: typing.Optional[FeedbackType] = None,
34
+ feedback: typing.Optional[FeedbackType] = OMIT,
35
+ tags: typing.Optional[typing.Sequence[str]] = OMIT,
32
36
  request_options: typing.Optional[RequestOptions] = None,
33
37
  ) -> Step:
34
38
  """
35
- Add feedback to a step.
39
+ Modify feedback for a given step.
36
40
 
37
41
  Parameters
38
42
  ----------
39
43
  step_id : str
40
44
 
41
45
  feedback : typing.Optional[FeedbackType]
46
+ Whether this feedback is positive or negative
47
+
48
+ tags : typing.Optional[typing.Sequence[str]]
49
+ Feedback tags to add to the step
42
50
 
43
51
  request_options : typing.Optional[RequestOptions]
44
52
  Request-specific configuration.
@@ -60,7 +68,7 @@ class FeedbackClient:
60
68
  step_id="step_id",
61
69
  )
62
70
  """
63
- _response = self._raw_client.create(step_id, feedback=feedback, request_options=request_options)
71
+ _response = self._raw_client.create(step_id, feedback=feedback, tags=tags, request_options=request_options)
64
72
  return _response.data
65
73
 
66
74
 
@@ -83,17 +91,22 @@ class AsyncFeedbackClient:
83
91
  self,
84
92
  step_id: str,
85
93
  *,
86
- feedback: typing.Optional[FeedbackType] = None,
94
+ feedback: typing.Optional[FeedbackType] = OMIT,
95
+ tags: typing.Optional[typing.Sequence[str]] = OMIT,
87
96
  request_options: typing.Optional[RequestOptions] = None,
88
97
  ) -> Step:
89
98
  """
90
- Add feedback to a step.
99
+ Modify feedback for a given step.
91
100
 
92
101
  Parameters
93
102
  ----------
94
103
  step_id : str
95
104
 
96
105
  feedback : typing.Optional[FeedbackType]
106
+ Whether this feedback is positive or negative
107
+
108
+ tags : typing.Optional[typing.Sequence[str]]
109
+ Feedback tags to add to the step
97
110
 
98
111
  request_options : typing.Optional[RequestOptions]
99
112
  Request-specific configuration.
@@ -123,5 +136,7 @@ class AsyncFeedbackClient:
123
136
 
124
137
  asyncio.run(main())
125
138
  """
126
- _response = await self._raw_client.create(step_id, feedback=feedback, request_options=request_options)
139
+ _response = await self._raw_client.create(
140
+ step_id, feedback=feedback, tags=tags, request_options=request_options
141
+ )
127
142
  return _response.data
@@ -14,6 +14,9 @@ from ...types.feedback_type import FeedbackType
14
14
  from ...types.http_validation_error import HttpValidationError
15
15
  from ...types.step import Step
16
16
 
17
+ # this is used as the default value for optional parameters
18
+ OMIT = typing.cast(typing.Any, ...)
19
+
17
20
 
18
21
  class RawFeedbackClient:
19
22
  def __init__(self, *, client_wrapper: SyncClientWrapper):
@@ -23,17 +26,22 @@ class RawFeedbackClient:
23
26
  self,
24
27
  step_id: str,
25
28
  *,
26
- feedback: typing.Optional[FeedbackType] = None,
29
+ feedback: typing.Optional[FeedbackType] = OMIT,
30
+ tags: typing.Optional[typing.Sequence[str]] = OMIT,
27
31
  request_options: typing.Optional[RequestOptions] = None,
28
32
  ) -> HttpResponse[Step]:
29
33
  """
30
- Add feedback to a step.
34
+ Modify feedback for a given step.
31
35
 
32
36
  Parameters
33
37
  ----------
34
38
  step_id : str
35
39
 
36
40
  feedback : typing.Optional[FeedbackType]
41
+ Whether this feedback is positive or negative
42
+
43
+ tags : typing.Optional[typing.Sequence[str]]
44
+ Feedback tags to add to the step
37
45
 
38
46
  request_options : typing.Optional[RequestOptions]
39
47
  Request-specific configuration.
@@ -46,10 +54,15 @@ class RawFeedbackClient:
46
54
  _response = self._client_wrapper.httpx_client.request(
47
55
  f"v1/steps/{jsonable_encoder(step_id)}/feedback",
48
56
  method="PATCH",
49
- params={
57
+ json={
50
58
  "feedback": feedback,
59
+ "tags": tags,
60
+ },
61
+ headers={
62
+ "content-type": "application/json",
51
63
  },
52
64
  request_options=request_options,
65
+ omit=OMIT,
53
66
  )
54
67
  try:
55
68
  if 200 <= _response.status_code < 300:
@@ -86,17 +99,22 @@ class AsyncRawFeedbackClient:
86
99
  self,
87
100
  step_id: str,
88
101
  *,
89
- feedback: typing.Optional[FeedbackType] = None,
102
+ feedback: typing.Optional[FeedbackType] = OMIT,
103
+ tags: typing.Optional[typing.Sequence[str]] = OMIT,
90
104
  request_options: typing.Optional[RequestOptions] = None,
91
105
  ) -> AsyncHttpResponse[Step]:
92
106
  """
93
- Add feedback to a step.
107
+ Modify feedback for a given step.
94
108
 
95
109
  Parameters
96
110
  ----------
97
111
  step_id : str
98
112
 
99
113
  feedback : typing.Optional[FeedbackType]
114
+ Whether this feedback is positive or negative
115
+
116
+ tags : typing.Optional[typing.Sequence[str]]
117
+ Feedback tags to add to the step
100
118
 
101
119
  request_options : typing.Optional[RequestOptions]
102
120
  Request-specific configuration.
@@ -109,10 +127,15 @@ class AsyncRawFeedbackClient:
109
127
  _response = await self._client_wrapper.httpx_client.request(
110
128
  f"v1/steps/{jsonable_encoder(step_id)}/feedback",
111
129
  method="PATCH",
112
- params={
130
+ json={
113
131
  "feedback": feedback,
132
+ "tags": tags,
133
+ },
134
+ headers={
135
+ "content-type": "application/json",
114
136
  },
115
137
  request_options=request_options,
138
+ omit=OMIT,
116
139
  )
117
140
  try:
118
141
  if 200 <= _response.status_code < 300:
@@ -0,0 +1,7 @@
1
+ # This file was auto-generated by Fern from our API Definition.
2
+
3
+ # isort: skip_file
4
+
5
+ from .types import MessagesListRequestOrder, MessagesListResponseItem
6
+
7
+ __all__ = ["MessagesListRequestOrder", "MessagesListResponseItem"]