letta-client 0.1.121__py3-none-any.whl → 0.1.123__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 (66) hide show
  1. letta_client/__init__.py +24 -23
  2. letta_client/agents/__init__.py +2 -1
  3. letta_client/agents/client.py +90 -581
  4. letta_client/agents/groups/client.py +167 -0
  5. letta_client/agents/messages/client.py +145 -0
  6. letta_client/agents/passages/client.py +289 -0
  7. letta_client/base_client.py +12 -0
  8. letta_client/batches/__init__.py +2 -0
  9. letta_client/{messages/batches → batches}/client.py +19 -19
  10. letta_client/blocks/__init__.py +3 -0
  11. letta_client/blocks/agents/__init__.py +2 -0
  12. letta_client/blocks/agents/client.py +149 -0
  13. letta_client/blocks/client.py +4 -127
  14. letta_client/client_side_access_tokens/__init__.py +12 -12
  15. letta_client/client_side_access_tokens/client.py +28 -32
  16. letta_client/client_side_access_tokens/types/__init__.py +15 -21
  17. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_request_policy_item.py → client_side_access_tokens_create_request_policy_item.py} +4 -4
  18. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_request_policy_item_access_item.py → client_side_access_tokens_create_request_policy_item_access_item.py} +1 -1
  19. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_response.py → client_side_access_tokens_create_response.py} +3 -5
  20. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_response_policy.py → client_side_access_tokens_create_response_policy.py} +4 -4
  21. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_response_policy_data_item.py → client_side_access_tokens_create_response_policy_data_item.py} +4 -4
  22. letta_client/client_side_access_tokens/types/{client_side_access_tokens_create_client_side_access_token_response_policy_data_item_access_item.py → client_side_access_tokens_create_response_policy_data_item_access_item.py} +1 -1
  23. letta_client/core/client_wrapper.py +1 -1
  24. letta_client/embeddings/__init__.py +2 -0
  25. letta_client/embeddings/client.py +108 -0
  26. letta_client/groups/client.py +0 -124
  27. letta_client/groups/messages/client.py +124 -0
  28. letta_client/identities/__init__.py +3 -0
  29. letta_client/identities/client.py +4 -154
  30. letta_client/identities/properties/__init__.py +2 -0
  31. letta_client/identities/properties/client.py +181 -0
  32. letta_client/messages/__init__.py +0 -3
  33. letta_client/messages/client.py +0 -4
  34. letta_client/models/client.py +4 -97
  35. letta_client/projects/__init__.py +2 -2
  36. letta_client/projects/client.py +13 -13
  37. letta_client/projects/types/__init__.py +3 -3
  38. letta_client/projects/types/{projects_list_projects_response.py → projects_list_response.py} +3 -3
  39. letta_client/projects/types/{projects_list_projects_response_projects_item.py → projects_list_response_projects_item.py} +1 -1
  40. letta_client/providers/client.py +173 -10
  41. letta_client/runs/__init__.py +3 -0
  42. letta_client/runs/client.py +34 -480
  43. letta_client/runs/messages/__init__.py +2 -0
  44. letta_client/runs/messages/client.py +234 -0
  45. letta_client/runs/steps/__init__.py +2 -0
  46. letta_client/runs/steps/client.py +217 -0
  47. letta_client/runs/usage/__init__.py +2 -0
  48. letta_client/runs/usage/client.py +145 -0
  49. letta_client/sources/client.py +6 -4
  50. letta_client/steps/client.py +78 -4
  51. letta_client/tags/__init__.py +2 -0
  52. letta_client/tags/client.py +92 -0
  53. letta_client/templates/__init__.py +4 -10
  54. letta_client/templates/agents/__init__.py +5 -0
  55. letta_client/templates/agents/client.py +208 -0
  56. letta_client/templates/agents/types/__init__.py +5 -0
  57. letta_client/templates/{types/templates_create_agents_response.py → agents/types/agents_create_response.py} +4 -4
  58. letta_client/templates/client.py +18 -203
  59. letta_client/templates/types/__init__.py +3 -8
  60. letta_client/templates/types/{templates_list_templates_response.py → templates_list_response.py} +3 -3
  61. letta_client/templates/types/{templates_list_templates_response_templates_item.py → templates_list_response_templates_item.py} +1 -1
  62. letta_client/tools/client.py +4 -4
  63. {letta_client-0.1.121.dist-info → letta_client-0.1.123.dist-info}/METADATA +1 -1
  64. {letta_client-0.1.121.dist-info → letta_client-0.1.123.dist-info}/RECORD +66 -47
  65. /letta_client/{messages/batches → agents/groups}/__init__.py +0 -0
  66. {letta_client-0.1.121.dist-info → letta_client-0.1.123.dist-info}/WHEEL +0 -0
@@ -1,5 +1,5 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from .types import ProjectsListProjectsResponse, ProjectsListProjectsResponseProjectsItem
3
+ from .types import ProjectsListResponse, ProjectsListResponseProjectsItem
4
4
 
5
- __all__ = ["ProjectsListProjectsResponse", "ProjectsListProjectsResponseProjectsItem"]
5
+ __all__ = ["ProjectsListResponse", "ProjectsListResponseProjectsItem"]
@@ -3,7 +3,7 @@
3
3
  from ..core.client_wrapper import SyncClientWrapper
4
4
  import typing
5
5
  from ..core.request_options import RequestOptions
6
- from .types.projects_list_projects_response import ProjectsListProjectsResponse
6
+ from .types.projects_list_response import ProjectsListResponse
7
7
  from ..core.unchecked_base_model import construct_type
8
8
  from json.decoder import JSONDecodeError
9
9
  from ..core.api_error import ApiError
@@ -14,14 +14,14 @@ class ProjectsClient:
14
14
  def __init__(self, *, client_wrapper: SyncClientWrapper):
15
15
  self._client_wrapper = client_wrapper
16
16
 
17
- def listprojects(
17
+ def list(
18
18
  self,
19
19
  *,
20
20
  name: typing.Optional[str] = None,
21
21
  offset: typing.Optional[str] = None,
22
22
  limit: typing.Optional[str] = None,
23
23
  request_options: typing.Optional[RequestOptions] = None,
24
- ) -> ProjectsListProjectsResponse:
24
+ ) -> ProjectsListResponse:
25
25
  """
26
26
  List all projects
27
27
 
@@ -38,7 +38,7 @@ class ProjectsClient:
38
38
 
39
39
  Returns
40
40
  -------
41
- ProjectsListProjectsResponse
41
+ ProjectsListResponse
42
42
  200
43
43
 
44
44
  Examples
@@ -48,7 +48,7 @@ class ProjectsClient:
48
48
  client = Letta(
49
49
  token="YOUR_TOKEN",
50
50
  )
51
- client.projects.listprojects()
51
+ client.projects.list()
52
52
  """
53
53
  _response = self._client_wrapper.httpx_client.request(
54
54
  "v1/projects",
@@ -63,9 +63,9 @@ class ProjectsClient:
63
63
  try:
64
64
  if 200 <= _response.status_code < 300:
65
65
  return typing.cast(
66
- ProjectsListProjectsResponse,
66
+ ProjectsListResponse,
67
67
  construct_type(
68
- type_=ProjectsListProjectsResponse, # type: ignore
68
+ type_=ProjectsListResponse, # type: ignore
69
69
  object_=_response.json(),
70
70
  ),
71
71
  )
@@ -79,14 +79,14 @@ class AsyncProjectsClient:
79
79
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
80
80
  self._client_wrapper = client_wrapper
81
81
 
82
- async def listprojects(
82
+ async def list(
83
83
  self,
84
84
  *,
85
85
  name: typing.Optional[str] = None,
86
86
  offset: typing.Optional[str] = None,
87
87
  limit: typing.Optional[str] = None,
88
88
  request_options: typing.Optional[RequestOptions] = None,
89
- ) -> ProjectsListProjectsResponse:
89
+ ) -> ProjectsListResponse:
90
90
  """
91
91
  List all projects
92
92
 
@@ -103,7 +103,7 @@ class AsyncProjectsClient:
103
103
 
104
104
  Returns
105
105
  -------
106
- ProjectsListProjectsResponse
106
+ ProjectsListResponse
107
107
  200
108
108
 
109
109
  Examples
@@ -118,7 +118,7 @@ class AsyncProjectsClient:
118
118
 
119
119
 
120
120
  async def main() -> None:
121
- await client.projects.listprojects()
121
+ await client.projects.list()
122
122
 
123
123
 
124
124
  asyncio.run(main())
@@ -136,9 +136,9 @@ class AsyncProjectsClient:
136
136
  try:
137
137
  if 200 <= _response.status_code < 300:
138
138
  return typing.cast(
139
- ProjectsListProjectsResponse,
139
+ ProjectsListResponse,
140
140
  construct_type(
141
- type_=ProjectsListProjectsResponse, # type: ignore
141
+ type_=ProjectsListResponse, # type: ignore
142
142
  object_=_response.json(),
143
143
  ),
144
144
  )
@@ -1,6 +1,6 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
- from .projects_list_projects_response import ProjectsListProjectsResponse
4
- from .projects_list_projects_response_projects_item import ProjectsListProjectsResponseProjectsItem
3
+ from .projects_list_response import ProjectsListResponse
4
+ from .projects_list_response_projects_item import ProjectsListResponseProjectsItem
5
5
 
6
- __all__ = ["ProjectsListProjectsResponse", "ProjectsListProjectsResponseProjectsItem"]
6
+ __all__ = ["ProjectsListResponse", "ProjectsListResponseProjectsItem"]
@@ -2,15 +2,15 @@
2
2
 
3
3
  from ...core.unchecked_base_model import UncheckedBaseModel
4
4
  import typing
5
- from .projects_list_projects_response_projects_item import ProjectsListProjectsResponseProjectsItem
5
+ from .projects_list_response_projects_item import ProjectsListResponseProjectsItem
6
6
  import typing_extensions
7
7
  from ...core.serialization import FieldMetadata
8
8
  from ...core.pydantic_utilities import IS_PYDANTIC_V2
9
9
  import pydantic
10
10
 
11
11
 
12
- class ProjectsListProjectsResponse(UncheckedBaseModel):
13
- projects: typing.List[ProjectsListProjectsResponseProjectsItem]
12
+ class ProjectsListResponse(UncheckedBaseModel):
13
+ projects: typing.List[ProjectsListResponseProjectsItem]
14
14
  has_next_page: typing_extensions.Annotated[bool, FieldMetadata(alias="hasNextPage")]
15
15
 
16
16
  if IS_PYDANTIC_V2:
@@ -6,7 +6,7 @@ import typing
6
6
  import pydantic
7
7
 
8
8
 
9
- class ProjectsListProjectsResponseProjectsItem(UncheckedBaseModel):
9
+ class ProjectsListResponseProjectsItem(UncheckedBaseModel):
10
10
  name: str
11
11
  slug: str
12
12
  id: str
@@ -9,6 +9,7 @@ from ..errors.unprocessable_entity_error import UnprocessableEntityError
9
9
  from ..types.http_validation_error import HttpValidationError
10
10
  from json.decoder import JSONDecodeError
11
11
  from ..core.api_error import ApiError
12
+ from ..core.jsonable_encoder import jsonable_encoder
12
13
  from ..core.client_wrapper import AsyncClientWrapper
13
14
 
14
15
  # this is used as the default value for optional parameters
@@ -19,7 +20,7 @@ class ProvidersClient:
19
20
  def __init__(self, *, client_wrapper: SyncClientWrapper):
20
21
  self._client_wrapper = client_wrapper
21
22
 
22
- def list_providers(
23
+ def list(
23
24
  self,
24
25
  *,
25
26
  after: typing.Optional[str] = None,
@@ -50,7 +51,7 @@ class ProvidersClient:
50
51
  client = Letta(
51
52
  token="YOUR_TOKEN",
52
53
  )
53
- client.providers.list_providers()
54
+ client.providers.list()
54
55
  """
55
56
  _response = self._client_wrapper.httpx_client.request(
56
57
  "v1/providers/",
@@ -85,9 +86,7 @@ class ProvidersClient:
85
86
  raise ApiError(status_code=_response.status_code, body=_response.text)
86
87
  raise ApiError(status_code=_response.status_code, body=_response_json)
87
88
 
88
- def create_provider(
89
- self, *, name: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
90
- ) -> Provider:
89
+ def create(self, *, name: str, api_key: str, request_options: typing.Optional[RequestOptions] = None) -> Provider:
91
90
  """
92
91
  Create a new custom provider
93
92
 
@@ -114,7 +113,7 @@ class ProvidersClient:
114
113
  client = Letta(
115
114
  token="YOUR_TOKEN",
116
115
  )
117
- client.providers.create_provider(
116
+ client.providers.create(
118
117
  name="name",
119
118
  api_key="api_key",
120
119
  )
@@ -289,12 +288,86 @@ class ProvidersClient:
289
288
  raise ApiError(status_code=_response.status_code, body=_response.text)
290
289
  raise ApiError(status_code=_response.status_code, body=_response_json)
291
290
 
291
+ def delete(self, provider_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
292
+ """
293
+ Parameters
294
+ ----------
295
+ provider_id : str
296
+
297
+ request_options : typing.Optional[RequestOptions]
298
+ Request-specific configuration.
299
+
300
+ Returns
301
+ -------
302
+ None
303
+
304
+ Examples
305
+ --------
306
+ from letta_client import Letta
307
+
308
+ client = Letta(
309
+ token="YOUR_TOKEN",
310
+ )
311
+ client.providers.delete(
312
+ provider_id="provider_id",
313
+ )
314
+ """
315
+ _response = self._client_wrapper.httpx_client.request(
316
+ f"v1/providers/{jsonable_encoder(provider_id)}",
317
+ method="DELETE",
318
+ request_options=request_options,
319
+ )
320
+ try:
321
+ if 200 <= _response.status_code < 300:
322
+ return
323
+ _response_json = _response.json()
324
+ except JSONDecodeError:
325
+ raise ApiError(status_code=_response.status_code, body=_response.text)
326
+ raise ApiError(status_code=_response.status_code, body=_response_json)
327
+
328
+ def modify(self, provider_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
329
+ """
330
+ Parameters
331
+ ----------
332
+ provider_id : str
333
+
334
+ request_options : typing.Optional[RequestOptions]
335
+ Request-specific configuration.
336
+
337
+ Returns
338
+ -------
339
+ None
340
+
341
+ Examples
342
+ --------
343
+ from letta_client import Letta
344
+
345
+ client = Letta(
346
+ token="YOUR_TOKEN",
347
+ )
348
+ client.providers.modify(
349
+ provider_id="provider_id",
350
+ )
351
+ """
352
+ _response = self._client_wrapper.httpx_client.request(
353
+ f"v1/providers/{jsonable_encoder(provider_id)}",
354
+ method="PATCH",
355
+ request_options=request_options,
356
+ )
357
+ try:
358
+ if 200 <= _response.status_code < 300:
359
+ return
360
+ _response_json = _response.json()
361
+ except JSONDecodeError:
362
+ raise ApiError(status_code=_response.status_code, body=_response.text)
363
+ raise ApiError(status_code=_response.status_code, body=_response_json)
364
+
292
365
 
293
366
  class AsyncProvidersClient:
294
367
  def __init__(self, *, client_wrapper: AsyncClientWrapper):
295
368
  self._client_wrapper = client_wrapper
296
369
 
297
- async def list_providers(
370
+ async def list(
298
371
  self,
299
372
  *,
300
373
  after: typing.Optional[str] = None,
@@ -330,7 +403,7 @@ class AsyncProvidersClient:
330
403
 
331
404
 
332
405
  async def main() -> None:
333
- await client.providers.list_providers()
406
+ await client.providers.list()
334
407
 
335
408
 
336
409
  asyncio.run(main())
@@ -368,7 +441,7 @@ class AsyncProvidersClient:
368
441
  raise ApiError(status_code=_response.status_code, body=_response.text)
369
442
  raise ApiError(status_code=_response.status_code, body=_response_json)
370
443
 
371
- async def create_provider(
444
+ async def create(
372
445
  self, *, name: str, api_key: str, request_options: typing.Optional[RequestOptions] = None
373
446
  ) -> Provider:
374
447
  """
@@ -402,7 +475,7 @@ class AsyncProvidersClient:
402
475
 
403
476
 
404
477
  async def main() -> None:
405
- await client.providers.create_provider(
478
+ await client.providers.create(
406
479
  name="name",
407
480
  api_key="api_key",
408
481
  )
@@ -595,3 +668,93 @@ class AsyncProvidersClient:
595
668
  except JSONDecodeError:
596
669
  raise ApiError(status_code=_response.status_code, body=_response.text)
597
670
  raise ApiError(status_code=_response.status_code, body=_response_json)
671
+
672
+ async def delete(self, provider_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
673
+ """
674
+ Parameters
675
+ ----------
676
+ provider_id : str
677
+
678
+ request_options : typing.Optional[RequestOptions]
679
+ Request-specific configuration.
680
+
681
+ Returns
682
+ -------
683
+ None
684
+
685
+ Examples
686
+ --------
687
+ import asyncio
688
+
689
+ from letta_client import AsyncLetta
690
+
691
+ client = AsyncLetta(
692
+ token="YOUR_TOKEN",
693
+ )
694
+
695
+
696
+ async def main() -> None:
697
+ await client.providers.delete(
698
+ provider_id="provider_id",
699
+ )
700
+
701
+
702
+ asyncio.run(main())
703
+ """
704
+ _response = await self._client_wrapper.httpx_client.request(
705
+ f"v1/providers/{jsonable_encoder(provider_id)}",
706
+ method="DELETE",
707
+ request_options=request_options,
708
+ )
709
+ try:
710
+ if 200 <= _response.status_code < 300:
711
+ return
712
+ _response_json = _response.json()
713
+ except JSONDecodeError:
714
+ raise ApiError(status_code=_response.status_code, body=_response.text)
715
+ raise ApiError(status_code=_response.status_code, body=_response_json)
716
+
717
+ async def modify(self, provider_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
718
+ """
719
+ Parameters
720
+ ----------
721
+ provider_id : str
722
+
723
+ request_options : typing.Optional[RequestOptions]
724
+ Request-specific configuration.
725
+
726
+ Returns
727
+ -------
728
+ None
729
+
730
+ Examples
731
+ --------
732
+ import asyncio
733
+
734
+ from letta_client import AsyncLetta
735
+
736
+ client = AsyncLetta(
737
+ token="YOUR_TOKEN",
738
+ )
739
+
740
+
741
+ async def main() -> None:
742
+ await client.providers.modify(
743
+ provider_id="provider_id",
744
+ )
745
+
746
+
747
+ asyncio.run(main())
748
+ """
749
+ _response = await self._client_wrapper.httpx_client.request(
750
+ f"v1/providers/{jsonable_encoder(provider_id)}",
751
+ method="PATCH",
752
+ request_options=request_options,
753
+ )
754
+ try:
755
+ if 200 <= _response.status_code < 300:
756
+ return
757
+ _response_json = _response.json()
758
+ except JSONDecodeError:
759
+ raise ApiError(status_code=_response.status_code, body=_response.text)
760
+ raise ApiError(status_code=_response.status_code, body=_response_json)
@@ -1,2 +1,5 @@
1
1
  # This file was auto-generated by Fern from our API Definition.
2
2
 
3
+ from . import messages, steps, usage
4
+
5
+ __all__ = ["messages", "steps", "usage"]