letta-client 0.1.126__py3-none-any.whl → 0.1.128__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.
- letta_client/__init__.py +4 -0
- letta_client/agents/client.py +112 -0
- letta_client/core/client_wrapper.py +1 -1
- letta_client/identities/client.py +112 -0
- letta_client/sources/client.py +114 -2
- letta_client/tools/client.py +134 -0
- letta_client/types/__init__.py +4 -0
- letta_client/types/message_create.py +5 -0
- letta_client/types/omitted_reasoning_content.py +1 -5
- letta_client/types/usage_statistics.py +4 -0
- letta_client/types/usage_statistics_completion_token_details.py +19 -0
- letta_client/types/usage_statistics_prompt_token_details.py +19 -0
- {letta_client-0.1.126.dist-info → letta_client-0.1.128.dist-info}/METADATA +1 -1
- {letta_client-0.1.126.dist-info → letta_client-0.1.128.dist-info}/RECORD +15 -13
- {letta_client-0.1.126.dist-info → letta_client-0.1.128.dist-info}/WHEEL +0 -0
letta_client/__init__.py
CHANGED
|
@@ -213,6 +213,8 @@ from .types import (
|
|
|
213
213
|
UpdateUserMessage,
|
|
214
214
|
UpdateUserMessageContent,
|
|
215
215
|
UsageStatistics,
|
|
216
|
+
UsageStatisticsCompletionTokenDetails,
|
|
217
|
+
UsageStatisticsPromptTokenDetails,
|
|
216
218
|
User,
|
|
217
219
|
UserCreate,
|
|
218
220
|
UserMessage,
|
|
@@ -531,6 +533,8 @@ __all__ = [
|
|
|
531
533
|
"UpdateUserMessage",
|
|
532
534
|
"UpdateUserMessageContent",
|
|
533
535
|
"UsageStatistics",
|
|
536
|
+
"UsageStatisticsCompletionTokenDetails",
|
|
537
|
+
"UsageStatisticsPromptTokenDetails",
|
|
534
538
|
"User",
|
|
535
539
|
"UserCreate",
|
|
536
540
|
"UserMessage",
|
letta_client/agents/client.py
CHANGED
|
@@ -457,6 +457,58 @@ class AgentsClient:
|
|
|
457
457
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
458
458
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
459
459
|
|
|
460
|
+
def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
461
|
+
"""
|
|
462
|
+
Get the count of all agents associated with a given user.
|
|
463
|
+
|
|
464
|
+
Parameters
|
|
465
|
+
----------
|
|
466
|
+
request_options : typing.Optional[RequestOptions]
|
|
467
|
+
Request-specific configuration.
|
|
468
|
+
|
|
469
|
+
Returns
|
|
470
|
+
-------
|
|
471
|
+
int
|
|
472
|
+
Successful Response
|
|
473
|
+
|
|
474
|
+
Examples
|
|
475
|
+
--------
|
|
476
|
+
from letta_client import Letta
|
|
477
|
+
|
|
478
|
+
client = Letta(
|
|
479
|
+
token="YOUR_TOKEN",
|
|
480
|
+
)
|
|
481
|
+
client.agents.count()
|
|
482
|
+
"""
|
|
483
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
484
|
+
"v1/agents/count",
|
|
485
|
+
method="GET",
|
|
486
|
+
request_options=request_options,
|
|
487
|
+
)
|
|
488
|
+
try:
|
|
489
|
+
if 200 <= _response.status_code < 300:
|
|
490
|
+
return typing.cast(
|
|
491
|
+
int,
|
|
492
|
+
construct_type(
|
|
493
|
+
type_=int, # type: ignore
|
|
494
|
+
object_=_response.json(),
|
|
495
|
+
),
|
|
496
|
+
)
|
|
497
|
+
if _response.status_code == 422:
|
|
498
|
+
raise UnprocessableEntityError(
|
|
499
|
+
typing.cast(
|
|
500
|
+
HttpValidationError,
|
|
501
|
+
construct_type(
|
|
502
|
+
type_=HttpValidationError, # type: ignore
|
|
503
|
+
object_=_response.json(),
|
|
504
|
+
),
|
|
505
|
+
)
|
|
506
|
+
)
|
|
507
|
+
_response_json = _response.json()
|
|
508
|
+
except JSONDecodeError:
|
|
509
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
510
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
511
|
+
|
|
460
512
|
def export_file(self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> str:
|
|
461
513
|
"""
|
|
462
514
|
Export the serialized JSON representation of an agent, formatted with indentation.
|
|
@@ -1400,6 +1452,66 @@ class AsyncAgentsClient:
|
|
|
1400
1452
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1401
1453
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
1402
1454
|
|
|
1455
|
+
async def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
1456
|
+
"""
|
|
1457
|
+
Get the count of all agents associated with a given user.
|
|
1458
|
+
|
|
1459
|
+
Parameters
|
|
1460
|
+
----------
|
|
1461
|
+
request_options : typing.Optional[RequestOptions]
|
|
1462
|
+
Request-specific configuration.
|
|
1463
|
+
|
|
1464
|
+
Returns
|
|
1465
|
+
-------
|
|
1466
|
+
int
|
|
1467
|
+
Successful Response
|
|
1468
|
+
|
|
1469
|
+
Examples
|
|
1470
|
+
--------
|
|
1471
|
+
import asyncio
|
|
1472
|
+
|
|
1473
|
+
from letta_client import AsyncLetta
|
|
1474
|
+
|
|
1475
|
+
client = AsyncLetta(
|
|
1476
|
+
token="YOUR_TOKEN",
|
|
1477
|
+
)
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
async def main() -> None:
|
|
1481
|
+
await client.agents.count()
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
asyncio.run(main())
|
|
1485
|
+
"""
|
|
1486
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1487
|
+
"v1/agents/count",
|
|
1488
|
+
method="GET",
|
|
1489
|
+
request_options=request_options,
|
|
1490
|
+
)
|
|
1491
|
+
try:
|
|
1492
|
+
if 200 <= _response.status_code < 300:
|
|
1493
|
+
return typing.cast(
|
|
1494
|
+
int,
|
|
1495
|
+
construct_type(
|
|
1496
|
+
type_=int, # type: ignore
|
|
1497
|
+
object_=_response.json(),
|
|
1498
|
+
),
|
|
1499
|
+
)
|
|
1500
|
+
if _response.status_code == 422:
|
|
1501
|
+
raise UnprocessableEntityError(
|
|
1502
|
+
typing.cast(
|
|
1503
|
+
HttpValidationError,
|
|
1504
|
+
construct_type(
|
|
1505
|
+
type_=HttpValidationError, # type: ignore
|
|
1506
|
+
object_=_response.json(),
|
|
1507
|
+
),
|
|
1508
|
+
)
|
|
1509
|
+
)
|
|
1510
|
+
_response_json = _response.json()
|
|
1511
|
+
except JSONDecodeError:
|
|
1512
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1513
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
1514
|
+
|
|
1403
1515
|
async def export_file(self, agent_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> str:
|
|
1404
1516
|
"""
|
|
1405
1517
|
Export the serialized JSON representation of an agent, formatted with indentation.
|
|
@@ -16,7 +16,7 @@ class BaseClientWrapper:
|
|
|
16
16
|
headers: typing.Dict[str, str] = {
|
|
17
17
|
"X-Fern-Language": "Python",
|
|
18
18
|
"X-Fern-SDK-Name": "letta-client",
|
|
19
|
-
"X-Fern-SDK-Version": "0.1.
|
|
19
|
+
"X-Fern-SDK-Version": "0.1.128",
|
|
20
20
|
}
|
|
21
21
|
if self.token is not None:
|
|
22
22
|
headers["Authorization"] = f"Bearer {self.token}"
|
|
@@ -322,6 +322,58 @@ class IdentitiesClient:
|
|
|
322
322
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
323
323
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
324
324
|
|
|
325
|
+
def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
326
|
+
"""
|
|
327
|
+
Get count of all identities for a user
|
|
328
|
+
|
|
329
|
+
Parameters
|
|
330
|
+
----------
|
|
331
|
+
request_options : typing.Optional[RequestOptions]
|
|
332
|
+
Request-specific configuration.
|
|
333
|
+
|
|
334
|
+
Returns
|
|
335
|
+
-------
|
|
336
|
+
int
|
|
337
|
+
Successful Response
|
|
338
|
+
|
|
339
|
+
Examples
|
|
340
|
+
--------
|
|
341
|
+
from letta_client import Letta
|
|
342
|
+
|
|
343
|
+
client = Letta(
|
|
344
|
+
token="YOUR_TOKEN",
|
|
345
|
+
)
|
|
346
|
+
client.identities.count()
|
|
347
|
+
"""
|
|
348
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
349
|
+
"v1/identities/count",
|
|
350
|
+
method="GET",
|
|
351
|
+
request_options=request_options,
|
|
352
|
+
)
|
|
353
|
+
try:
|
|
354
|
+
if 200 <= _response.status_code < 300:
|
|
355
|
+
return typing.cast(
|
|
356
|
+
int,
|
|
357
|
+
construct_type(
|
|
358
|
+
type_=int, # type: ignore
|
|
359
|
+
object_=_response.json(),
|
|
360
|
+
),
|
|
361
|
+
)
|
|
362
|
+
if _response.status_code == 422:
|
|
363
|
+
raise UnprocessableEntityError(
|
|
364
|
+
typing.cast(
|
|
365
|
+
HttpValidationError,
|
|
366
|
+
construct_type(
|
|
367
|
+
type_=HttpValidationError, # type: ignore
|
|
368
|
+
object_=_response.json(),
|
|
369
|
+
),
|
|
370
|
+
)
|
|
371
|
+
)
|
|
372
|
+
_response_json = _response.json()
|
|
373
|
+
except JSONDecodeError:
|
|
374
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
375
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
376
|
+
|
|
325
377
|
def retrieve(self, identity_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Identity:
|
|
326
378
|
"""
|
|
327
379
|
Parameters
|
|
@@ -857,6 +909,66 @@ class AsyncIdentitiesClient:
|
|
|
857
909
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
858
910
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
859
911
|
|
|
912
|
+
async def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
913
|
+
"""
|
|
914
|
+
Get count of all identities for a user
|
|
915
|
+
|
|
916
|
+
Parameters
|
|
917
|
+
----------
|
|
918
|
+
request_options : typing.Optional[RequestOptions]
|
|
919
|
+
Request-specific configuration.
|
|
920
|
+
|
|
921
|
+
Returns
|
|
922
|
+
-------
|
|
923
|
+
int
|
|
924
|
+
Successful Response
|
|
925
|
+
|
|
926
|
+
Examples
|
|
927
|
+
--------
|
|
928
|
+
import asyncio
|
|
929
|
+
|
|
930
|
+
from letta_client import AsyncLetta
|
|
931
|
+
|
|
932
|
+
client = AsyncLetta(
|
|
933
|
+
token="YOUR_TOKEN",
|
|
934
|
+
)
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
async def main() -> None:
|
|
938
|
+
await client.identities.count()
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
asyncio.run(main())
|
|
942
|
+
"""
|
|
943
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
944
|
+
"v1/identities/count",
|
|
945
|
+
method="GET",
|
|
946
|
+
request_options=request_options,
|
|
947
|
+
)
|
|
948
|
+
try:
|
|
949
|
+
if 200 <= _response.status_code < 300:
|
|
950
|
+
return typing.cast(
|
|
951
|
+
int,
|
|
952
|
+
construct_type(
|
|
953
|
+
type_=int, # type: ignore
|
|
954
|
+
object_=_response.json(),
|
|
955
|
+
),
|
|
956
|
+
)
|
|
957
|
+
if _response.status_code == 422:
|
|
958
|
+
raise UnprocessableEntityError(
|
|
959
|
+
typing.cast(
|
|
960
|
+
HttpValidationError,
|
|
961
|
+
construct_type(
|
|
962
|
+
type_=HttpValidationError, # type: ignore
|
|
963
|
+
object_=_response.json(),
|
|
964
|
+
),
|
|
965
|
+
)
|
|
966
|
+
)
|
|
967
|
+
_response_json = _response.json()
|
|
968
|
+
except JSONDecodeError:
|
|
969
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
970
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
971
|
+
|
|
860
972
|
async def retrieve(self, identity_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Identity:
|
|
861
973
|
"""
|
|
862
974
|
Parameters
|
letta_client/sources/client.py
CHANGED
|
@@ -5,13 +5,13 @@ from ..core.client_wrapper import SyncClientWrapper
|
|
|
5
5
|
from .files.client import FilesClient
|
|
6
6
|
from .passages.client import PassagesClient
|
|
7
7
|
from ..core.request_options import RequestOptions
|
|
8
|
-
from ..types.source import Source
|
|
9
|
-
from ..core.jsonable_encoder import jsonable_encoder
|
|
10
8
|
from ..core.unchecked_base_model import construct_type
|
|
11
9
|
from ..errors.unprocessable_entity_error import UnprocessableEntityError
|
|
12
10
|
from ..types.http_validation_error import HttpValidationError
|
|
13
11
|
from json.decoder import JSONDecodeError
|
|
14
12
|
from ..core.api_error import ApiError
|
|
13
|
+
from ..types.source import Source
|
|
14
|
+
from ..core.jsonable_encoder import jsonable_encoder
|
|
15
15
|
from ..types.embedding_config import EmbeddingConfig
|
|
16
16
|
from ..core.serialization import convert_and_respect_annotation_metadata
|
|
17
17
|
from ..core.client_wrapper import AsyncClientWrapper
|
|
@@ -28,6 +28,58 @@ class SourcesClient:
|
|
|
28
28
|
self.files = FilesClient(client_wrapper=self._client_wrapper)
|
|
29
29
|
self.passages = PassagesClient(client_wrapper=self._client_wrapper)
|
|
30
30
|
|
|
31
|
+
def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
32
|
+
"""
|
|
33
|
+
Count all data sources created by a user.
|
|
34
|
+
|
|
35
|
+
Parameters
|
|
36
|
+
----------
|
|
37
|
+
request_options : typing.Optional[RequestOptions]
|
|
38
|
+
Request-specific configuration.
|
|
39
|
+
|
|
40
|
+
Returns
|
|
41
|
+
-------
|
|
42
|
+
int
|
|
43
|
+
Successful Response
|
|
44
|
+
|
|
45
|
+
Examples
|
|
46
|
+
--------
|
|
47
|
+
from letta_client import Letta
|
|
48
|
+
|
|
49
|
+
client = Letta(
|
|
50
|
+
token="YOUR_TOKEN",
|
|
51
|
+
)
|
|
52
|
+
client.sources.count()
|
|
53
|
+
"""
|
|
54
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
55
|
+
"v1/sources/count",
|
|
56
|
+
method="GET",
|
|
57
|
+
request_options=request_options,
|
|
58
|
+
)
|
|
59
|
+
try:
|
|
60
|
+
if 200 <= _response.status_code < 300:
|
|
61
|
+
return typing.cast(
|
|
62
|
+
int,
|
|
63
|
+
construct_type(
|
|
64
|
+
type_=int, # type: ignore
|
|
65
|
+
object_=_response.json(),
|
|
66
|
+
),
|
|
67
|
+
)
|
|
68
|
+
if _response.status_code == 422:
|
|
69
|
+
raise UnprocessableEntityError(
|
|
70
|
+
typing.cast(
|
|
71
|
+
HttpValidationError,
|
|
72
|
+
construct_type(
|
|
73
|
+
type_=HttpValidationError, # type: ignore
|
|
74
|
+
object_=_response.json(),
|
|
75
|
+
),
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
_response_json = _response.json()
|
|
79
|
+
except JSONDecodeError:
|
|
80
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
81
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
82
|
+
|
|
31
83
|
def retrieve(self, source_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Source:
|
|
32
84
|
"""
|
|
33
85
|
Get all sources
|
|
@@ -442,6 +494,66 @@ class AsyncSourcesClient:
|
|
|
442
494
|
self.files = AsyncFilesClient(client_wrapper=self._client_wrapper)
|
|
443
495
|
self.passages = AsyncPassagesClient(client_wrapper=self._client_wrapper)
|
|
444
496
|
|
|
497
|
+
async def count(self, *, request_options: typing.Optional[RequestOptions] = None) -> int:
|
|
498
|
+
"""
|
|
499
|
+
Count all data sources created by a user.
|
|
500
|
+
|
|
501
|
+
Parameters
|
|
502
|
+
----------
|
|
503
|
+
request_options : typing.Optional[RequestOptions]
|
|
504
|
+
Request-specific configuration.
|
|
505
|
+
|
|
506
|
+
Returns
|
|
507
|
+
-------
|
|
508
|
+
int
|
|
509
|
+
Successful Response
|
|
510
|
+
|
|
511
|
+
Examples
|
|
512
|
+
--------
|
|
513
|
+
import asyncio
|
|
514
|
+
|
|
515
|
+
from letta_client import AsyncLetta
|
|
516
|
+
|
|
517
|
+
client = AsyncLetta(
|
|
518
|
+
token="YOUR_TOKEN",
|
|
519
|
+
)
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
async def main() -> None:
|
|
523
|
+
await client.sources.count()
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
asyncio.run(main())
|
|
527
|
+
"""
|
|
528
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
529
|
+
"v1/sources/count",
|
|
530
|
+
method="GET",
|
|
531
|
+
request_options=request_options,
|
|
532
|
+
)
|
|
533
|
+
try:
|
|
534
|
+
if 200 <= _response.status_code < 300:
|
|
535
|
+
return typing.cast(
|
|
536
|
+
int,
|
|
537
|
+
construct_type(
|
|
538
|
+
type_=int, # type: ignore
|
|
539
|
+
object_=_response.json(),
|
|
540
|
+
),
|
|
541
|
+
)
|
|
542
|
+
if _response.status_code == 422:
|
|
543
|
+
raise UnprocessableEntityError(
|
|
544
|
+
typing.cast(
|
|
545
|
+
HttpValidationError,
|
|
546
|
+
construct_type(
|
|
547
|
+
type_=HttpValidationError, # type: ignore
|
|
548
|
+
object_=_response.json(),
|
|
549
|
+
),
|
|
550
|
+
)
|
|
551
|
+
)
|
|
552
|
+
_response_json = _response.json()
|
|
553
|
+
except JSONDecodeError:
|
|
554
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
555
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
556
|
+
|
|
445
557
|
async def retrieve(self, source_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> Source:
|
|
446
558
|
"""
|
|
447
559
|
Get all sources
|
letta_client/tools/client.py
CHANGED
|
@@ -245,6 +245,69 @@ class ToolsClient:
|
|
|
245
245
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
246
246
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
247
247
|
|
|
248
|
+
def count(
|
|
249
|
+
self,
|
|
250
|
+
*,
|
|
251
|
+
include_base_tools: typing.Optional[bool] = None,
|
|
252
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
253
|
+
) -> int:
|
|
254
|
+
"""
|
|
255
|
+
Get a count of all tools available to agents belonging to the org of the user.
|
|
256
|
+
|
|
257
|
+
Parameters
|
|
258
|
+
----------
|
|
259
|
+
include_base_tools : typing.Optional[bool]
|
|
260
|
+
Include built-in Letta tools in the count
|
|
261
|
+
|
|
262
|
+
request_options : typing.Optional[RequestOptions]
|
|
263
|
+
Request-specific configuration.
|
|
264
|
+
|
|
265
|
+
Returns
|
|
266
|
+
-------
|
|
267
|
+
int
|
|
268
|
+
Successful Response
|
|
269
|
+
|
|
270
|
+
Examples
|
|
271
|
+
--------
|
|
272
|
+
from letta_client import Letta
|
|
273
|
+
|
|
274
|
+
client = Letta(
|
|
275
|
+
token="YOUR_TOKEN",
|
|
276
|
+
)
|
|
277
|
+
client.tools.count()
|
|
278
|
+
"""
|
|
279
|
+
_response = self._client_wrapper.httpx_client.request(
|
|
280
|
+
"v1/tools/count",
|
|
281
|
+
method="GET",
|
|
282
|
+
params={
|
|
283
|
+
"include_base_tools": include_base_tools,
|
|
284
|
+
},
|
|
285
|
+
request_options=request_options,
|
|
286
|
+
)
|
|
287
|
+
try:
|
|
288
|
+
if 200 <= _response.status_code < 300:
|
|
289
|
+
return typing.cast(
|
|
290
|
+
int,
|
|
291
|
+
construct_type(
|
|
292
|
+
type_=int, # type: ignore
|
|
293
|
+
object_=_response.json(),
|
|
294
|
+
),
|
|
295
|
+
)
|
|
296
|
+
if _response.status_code == 422:
|
|
297
|
+
raise UnprocessableEntityError(
|
|
298
|
+
typing.cast(
|
|
299
|
+
HttpValidationError,
|
|
300
|
+
construct_type(
|
|
301
|
+
type_=HttpValidationError, # type: ignore
|
|
302
|
+
object_=_response.json(),
|
|
303
|
+
),
|
|
304
|
+
)
|
|
305
|
+
)
|
|
306
|
+
_response_json = _response.json()
|
|
307
|
+
except JSONDecodeError:
|
|
308
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
309
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
310
|
+
|
|
248
311
|
def list(
|
|
249
312
|
self,
|
|
250
313
|
*,
|
|
@@ -1381,6 +1444,77 @@ class AsyncToolsClient:
|
|
|
1381
1444
|
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1382
1445
|
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
1383
1446
|
|
|
1447
|
+
async def count(
|
|
1448
|
+
self,
|
|
1449
|
+
*,
|
|
1450
|
+
include_base_tools: typing.Optional[bool] = None,
|
|
1451
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
1452
|
+
) -> int:
|
|
1453
|
+
"""
|
|
1454
|
+
Get a count of all tools available to agents belonging to the org of the user.
|
|
1455
|
+
|
|
1456
|
+
Parameters
|
|
1457
|
+
----------
|
|
1458
|
+
include_base_tools : typing.Optional[bool]
|
|
1459
|
+
Include built-in Letta tools in the count
|
|
1460
|
+
|
|
1461
|
+
request_options : typing.Optional[RequestOptions]
|
|
1462
|
+
Request-specific configuration.
|
|
1463
|
+
|
|
1464
|
+
Returns
|
|
1465
|
+
-------
|
|
1466
|
+
int
|
|
1467
|
+
Successful Response
|
|
1468
|
+
|
|
1469
|
+
Examples
|
|
1470
|
+
--------
|
|
1471
|
+
import asyncio
|
|
1472
|
+
|
|
1473
|
+
from letta_client import AsyncLetta
|
|
1474
|
+
|
|
1475
|
+
client = AsyncLetta(
|
|
1476
|
+
token="YOUR_TOKEN",
|
|
1477
|
+
)
|
|
1478
|
+
|
|
1479
|
+
|
|
1480
|
+
async def main() -> None:
|
|
1481
|
+
await client.tools.count()
|
|
1482
|
+
|
|
1483
|
+
|
|
1484
|
+
asyncio.run(main())
|
|
1485
|
+
"""
|
|
1486
|
+
_response = await self._client_wrapper.httpx_client.request(
|
|
1487
|
+
"v1/tools/count",
|
|
1488
|
+
method="GET",
|
|
1489
|
+
params={
|
|
1490
|
+
"include_base_tools": include_base_tools,
|
|
1491
|
+
},
|
|
1492
|
+
request_options=request_options,
|
|
1493
|
+
)
|
|
1494
|
+
try:
|
|
1495
|
+
if 200 <= _response.status_code < 300:
|
|
1496
|
+
return typing.cast(
|
|
1497
|
+
int,
|
|
1498
|
+
construct_type(
|
|
1499
|
+
type_=int, # type: ignore
|
|
1500
|
+
object_=_response.json(),
|
|
1501
|
+
),
|
|
1502
|
+
)
|
|
1503
|
+
if _response.status_code == 422:
|
|
1504
|
+
raise UnprocessableEntityError(
|
|
1505
|
+
typing.cast(
|
|
1506
|
+
HttpValidationError,
|
|
1507
|
+
construct_type(
|
|
1508
|
+
type_=HttpValidationError, # type: ignore
|
|
1509
|
+
object_=_response.json(),
|
|
1510
|
+
),
|
|
1511
|
+
)
|
|
1512
|
+
)
|
|
1513
|
+
_response_json = _response.json()
|
|
1514
|
+
except JSONDecodeError:
|
|
1515
|
+
raise ApiError(status_code=_response.status_code, body=_response.text)
|
|
1516
|
+
raise ApiError(status_code=_response.status_code, body=_response_json)
|
|
1517
|
+
|
|
1384
1518
|
async def list(
|
|
1385
1519
|
self,
|
|
1386
1520
|
*,
|
letta_client/types/__init__.py
CHANGED
|
@@ -216,6 +216,8 @@ from .update_system_message import UpdateSystemMessage
|
|
|
216
216
|
from .update_user_message import UpdateUserMessage
|
|
217
217
|
from .update_user_message_content import UpdateUserMessageContent
|
|
218
218
|
from .usage_statistics import UsageStatistics
|
|
219
|
+
from .usage_statistics_completion_token_details import UsageStatisticsCompletionTokenDetails
|
|
220
|
+
from .usage_statistics_prompt_token_details import UsageStatisticsPromptTokenDetails
|
|
219
221
|
from .user import User
|
|
220
222
|
from .user_create import UserCreate
|
|
221
223
|
from .user_message import UserMessage
|
|
@@ -441,6 +443,8 @@ __all__ = [
|
|
|
441
443
|
"UpdateUserMessage",
|
|
442
444
|
"UpdateUserMessageContent",
|
|
443
445
|
"UsageStatistics",
|
|
446
|
+
"UsageStatisticsCompletionTokenDetails",
|
|
447
|
+
"UsageStatisticsPromptTokenDetails",
|
|
444
448
|
"User",
|
|
445
449
|
"UserCreate",
|
|
446
450
|
"UserMessage",
|
|
@@ -38,6 +38,11 @@ class MessageCreate(UncheckedBaseModel):
|
|
|
38
38
|
The id of the sender of the message, can be an identity id or agent id
|
|
39
39
|
"""
|
|
40
40
|
|
|
41
|
+
group_id: typing.Optional[str] = pydantic.Field(default=None)
|
|
42
|
+
"""
|
|
43
|
+
The multi-agent group that the message was sent in
|
|
44
|
+
"""
|
|
45
|
+
|
|
41
46
|
if IS_PYDANTIC_V2:
|
|
42
47
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
43
48
|
else:
|
|
@@ -2,16 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
4
4
|
import typing
|
|
5
|
-
import pydantic
|
|
6
5
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import pydantic
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class OmittedReasoningContent(UncheckedBaseModel):
|
|
10
10
|
type: typing.Literal["omitted_reasoning"] = "omitted_reasoning"
|
|
11
|
-
tokens: int = pydantic.Field()
|
|
12
|
-
"""
|
|
13
|
-
The reasoning token count for intermediate reasoning content.
|
|
14
|
-
"""
|
|
15
11
|
|
|
16
12
|
if IS_PYDANTIC_V2:
|
|
17
13
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
4
4
|
import typing
|
|
5
|
+
from .usage_statistics_prompt_token_details import UsageStatisticsPromptTokenDetails
|
|
6
|
+
from .usage_statistics_completion_token_details import UsageStatisticsCompletionTokenDetails
|
|
5
7
|
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
8
|
import pydantic
|
|
7
9
|
|
|
@@ -10,6 +12,8 @@ class UsageStatistics(UncheckedBaseModel):
|
|
|
10
12
|
completion_tokens: typing.Optional[int] = None
|
|
11
13
|
prompt_tokens: typing.Optional[int] = None
|
|
12
14
|
total_tokens: typing.Optional[int] = None
|
|
15
|
+
prompt_tokens_details: typing.Optional[UsageStatisticsPromptTokenDetails] = None
|
|
16
|
+
completion_tokens_details: typing.Optional[UsageStatisticsCompletionTokenDetails] = None
|
|
13
17
|
|
|
14
18
|
if IS_PYDANTIC_V2:
|
|
15
19
|
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
4
|
+
import typing
|
|
5
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import pydantic
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UsageStatisticsCompletionTokenDetails(UncheckedBaseModel):
|
|
10
|
+
reasoning_tokens: typing.Optional[int] = None
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
14
|
+
else:
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
frozen = True
|
|
18
|
+
smart_union = True
|
|
19
|
+
extra = pydantic.Extra.allow
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# This file was auto-generated by Fern from our API Definition.
|
|
2
|
+
|
|
3
|
+
from ..core.unchecked_base_model import UncheckedBaseModel
|
|
4
|
+
import typing
|
|
5
|
+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
|
|
6
|
+
import pydantic
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class UsageStatisticsPromptTokenDetails(UncheckedBaseModel):
|
|
10
|
+
cached_tokens: typing.Optional[int] = None
|
|
11
|
+
|
|
12
|
+
if IS_PYDANTIC_V2:
|
|
13
|
+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
|
|
14
|
+
else:
|
|
15
|
+
|
|
16
|
+
class Config:
|
|
17
|
+
frozen = True
|
|
18
|
+
smart_union = True
|
|
19
|
+
extra = pydantic.Extra.allow
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
letta_client/__init__.py,sha256=
|
|
1
|
+
letta_client/__init__.py,sha256=f_0v4oYXbsq-6Y56HWxtvUlCjeKPm5jeS_2TjyONXwI,16349
|
|
2
2
|
letta_client/agents/__init__.py,sha256=C46uidjw-_nowv5mqI7lsXUKvoW49utJHL_k-F7HIyY,1616
|
|
3
3
|
letta_client/agents/blocks/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
4
4
|
letta_client/agents/blocks/client.py,sha256=u5zvutxoH_DqfSLWhRtNSRBC9_ezQDx682cxkxDz3JA,23822
|
|
5
|
-
letta_client/agents/client.py,sha256=
|
|
5
|
+
letta_client/agents/client.py,sha256=P-uXumCID_I0VVA9ydc_cI5-V2xDkgXe7AhxplgewuI,79926
|
|
6
6
|
letta_client/agents/context/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
7
7
|
letta_client/agents/context/client.py,sha256=GKKvoG4N_K8Biz9yDjeIHpFG0C8Cwc7tHmEX3pTL_9U,4815
|
|
8
8
|
letta_client/agents/core_memory/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
@@ -61,7 +61,7 @@ letta_client/client_side_access_tokens/types/client_side_access_tokens_create_re
|
|
|
61
61
|
letta_client/client_side_access_tokens/types/client_side_access_tokens_create_response_policy_data_item_access_item.py,sha256=R-H25IpNp9feSrW8Yj3h9O3UTMVvFniQJElogKxLuoE,254
|
|
62
62
|
letta_client/core/__init__.py,sha256=OKbX2aCZXgHCDUsCouqv-OiX32xA6eFFCKIUH9M5Vzk,1591
|
|
63
63
|
letta_client/core/api_error.py,sha256=RE8LELok2QCjABadECTvtDp7qejA1VmINCh6TbqPwSE,426
|
|
64
|
-
letta_client/core/client_wrapper.py,sha256=
|
|
64
|
+
letta_client/core/client_wrapper.py,sha256=6wsq4X_Mel_R-vaQWqGdJC0vyIfhQG_2OvLGl0xgqJE,1998
|
|
65
65
|
letta_client/core/datetime_utils.py,sha256=nBys2IsYrhPdszxGKCNRPSOCwa-5DWOHG95FB8G9PKo,1047
|
|
66
66
|
letta_client/core/file.py,sha256=d4NNbX8XvXP32z8KpK2Xovv33nFfruIrpz0QWxlgpZk,2663
|
|
67
67
|
letta_client/core/http_client.py,sha256=Z77OIxIbL4OAB2IDqjRq_sYa5yNYAWfmdhdCSSvh6Y4,19552
|
|
@@ -95,7 +95,7 @@ letta_client/groups/types/group_update_manager_config.py,sha256=ZmSsb5UMolq-py0N
|
|
|
95
95
|
letta_client/health/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
96
96
|
letta_client/health/client.py,sha256=6BjXH83ZhsLt_MD4QA2hiTsvgfeIgxMT1KSN0Oj6e1I,3242
|
|
97
97
|
letta_client/identities/__init__.py,sha256=bnFuyXLGO2qat5VgmZkdN7FVl74I_G7bPYDdKjyMM-Y,116
|
|
98
|
-
letta_client/identities/client.py,sha256=
|
|
98
|
+
letta_client/identities/client.py,sha256=vhmsa-ZKt0wKY9_1nfu_ORjXjJkVdSA24Ux-QKwGOGI,39684
|
|
99
99
|
letta_client/identities/properties/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
100
100
|
letta_client/identities/properties/client.py,sha256=Nv7jOi5O8TmeZ1g0-TqnqiJ0hLcHMe2ZIfqAkEDB2Bk,6053
|
|
101
101
|
letta_client/jobs/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
@@ -119,7 +119,7 @@ letta_client/runs/steps/client.py,sha256=f916x0x6FH7_WzBSl6uw03l-j-QMzr7HzOMNsvC
|
|
|
119
119
|
letta_client/runs/usage/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
120
120
|
letta_client/runs/usage/client.py,sha256=ea7e0R-Lv3VtbkJ-JC4RgYSr4TI2OjD31XeNLiDmUUg,4666
|
|
121
121
|
letta_client/sources/__init__.py,sha256=kswgCv4UdkSVk1Y4tsMM1HadOwvhh_Fr96VTSMV4Umc,128
|
|
122
|
-
letta_client/sources/client.py,sha256=
|
|
122
|
+
letta_client/sources/client.py,sha256=ozZYAKtO44VZoKIvex26b8nmkMzsvDMD5266Sw_gOyU,32579
|
|
123
123
|
letta_client/sources/files/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
124
124
|
letta_client/sources/files/client.py,sha256=R-9zHK_wWtvW-2K7erQVVh9rR7a5JC4zxmTK3rrWJoU,13289
|
|
125
125
|
letta_client/sources/passages/__init__.py,sha256=FTtvy8EDg9nNNg9WCatVgKTRYV8-_v1roeGPAKoa_pw,65
|
|
@@ -138,13 +138,13 @@ letta_client/templates/types/__init__.py,sha256=dAr_dEh0BdwUxAcV1sJ9RM07Z8nCv4dC
|
|
|
138
138
|
letta_client/templates/types/templates_list_response.py,sha256=HYloMVzk086c6fFGRYZz-Ozc_Yylozp2aPpweHS5uXI,866
|
|
139
139
|
letta_client/templates/types/templates_list_response_templates_item.py,sha256=yyJq8wEOb2XIg99uhRMKoy2qD2CbuvI_5FAspwYWnfI,593
|
|
140
140
|
letta_client/tools/__init__.py,sha256=XsuAkxHDA-Z98gLNNW_fiEwFP3fP4XQipflrK2bHl8k,353
|
|
141
|
-
letta_client/tools/client.py,sha256=
|
|
141
|
+
letta_client/tools/client.py,sha256=hB-Of9ejHugQ1VAVv6bbeH_jSy02TIFeIrXeyQJcsXA,82476
|
|
142
142
|
letta_client/tools/types/__init__.py,sha256=R11LYBi6lxkud_DRyaHFUHtlnbfnEI93-SEo7FL4tzs,478
|
|
143
143
|
letta_client/tools/types/add_mcp_server_request.py,sha256=EieZjfOT95sjkpxXdqy7glpxF4J4J3fm6tlaHFnYk84,265
|
|
144
144
|
letta_client/tools/types/add_mcp_server_response_item.py,sha256=TWdsKqGb1INhYtpGnAckz0Pw4nZShumSp4pfocRfxCA,270
|
|
145
145
|
letta_client/tools/types/delete_mcp_server_response_item.py,sha256=MeZObU-7tMSCd-S5yuUjNDse6A1hUz1LLjbko0pXaro,273
|
|
146
146
|
letta_client/tools/types/list_mcp_servers_response_value.py,sha256=AIoXu4bO8QNSU7zjL1jj0Rg4313wVtPaTt13W0aevLQ,273
|
|
147
|
-
letta_client/types/__init__.py,sha256=
|
|
147
|
+
letta_client/types/__init__.py,sha256=vYAcLWMP_PDOojlIEUvXodGYiopLIdUGtBBNbNV3n14,20464
|
|
148
148
|
letta_client/types/action_model.py,sha256=y1e2XMv3skFaNJIBdYoBKgiORzGh05aOVvu-qVR9uHg,1240
|
|
149
149
|
letta_client/types/action_parameters_model.py,sha256=LgKf5aPZG3-OHGxFdXiSokIDgce8c02xPYIAY05VgW8,828
|
|
150
150
|
letta_client/types/action_response_model.py,sha256=yq2Fd9UU8j7vvtE3VqXUoRRvDzWcfJPj_95ynGdeHCs,824
|
|
@@ -282,14 +282,14 @@ letta_client/types/mcp_tool.py,sha256=_GSTb0k8l-IUEflRkQ6-v45UnbTcA4Nv1N8sgmExJQ
|
|
|
282
282
|
letta_client/types/memory.py,sha256=KD5MkDQB-vbRPT9f_-yFBWY1WUW_NWxYEI0IiflG6P8,1035
|
|
283
283
|
letta_client/types/message.py,sha256=npZKMX6fryL2F1ODDoWT3XWeh-pHeEJ1IIgbnSzgGcQ,3936
|
|
284
284
|
letta_client/types/message_content_item.py,sha256=mg2npSBRXsH7-fAwhx9YhkVbeCF3cM8pE6fPYtUDIyc,550
|
|
285
|
-
letta_client/types/message_create.py,sha256=
|
|
285
|
+
letta_client/types/message_create.py,sha256=FkABWA09E1Ra47o0g53zf7b6DqgMfT_9XXQUv30tCdw,1445
|
|
286
286
|
letta_client/types/message_create_content.py,sha256=KL3XAVKVrdsh4DZwdxKofUyehS-vnOT_VJNVzZDpE20,226
|
|
287
287
|
letta_client/types/message_create_role.py,sha256=atjQEZ8iT4gTAmrFTFnRaM66f0MGsgfGq6hpx1Q-i44,159
|
|
288
288
|
letta_client/types/message_role.py,sha256=HKatrA1jt02oTObExloTY3rW8Urzn37kBTg0Z6MbwkQ,186
|
|
289
289
|
letta_client/types/message_schema.py,sha256=i7PLWd92bEltq3bSJam3c74p5zw-WdcoUqazLNmNYAw,955
|
|
290
290
|
letta_client/types/not_found_error_body.py,sha256=_1esSlUdkBx6CRs6aAIJrxzh3VZKEG0xzeLbxebBuy0,615
|
|
291
291
|
letta_client/types/not_found_error_body_message.py,sha256=Kc9xrVghgDATdPAGpTPnzyKe6ds5q8Vr6zcBU5lLcH4,309
|
|
292
|
-
letta_client/types/omitted_reasoning_content.py,sha256=
|
|
292
|
+
letta_client/types/omitted_reasoning_content.py,sha256=gIhWRyVtfB-Jo0Ua3QpyJNag2m_yRpusoPTcZZxjKh0,622
|
|
293
293
|
letta_client/types/openai_types_chat_chat_completion_message_tool_call_param_function.py,sha256=glG5tG6g2uxP4R5jwsChkf3F0sb208uEbR-25dnrTiM,621
|
|
294
294
|
letta_client/types/openai_types_chat_chat_completion_named_tool_choice_param_function.py,sha256=20aPdyj3_-cD_p33yZ0ca3IbU9Apq1UrnxCSaU6OgYg,602
|
|
295
295
|
letta_client/types/openai_types_chat_completion_create_params_function.py,sha256=oTjYqRv8z6SMSdFgTl4W9oI-QUQxz8Unf4yn90sByss,721
|
|
@@ -356,7 +356,9 @@ letta_client/types/update_reasoning_message.py,sha256=2ejxLRNfVDWBfGQG2-A1JNq-Du
|
|
|
356
356
|
letta_client/types/update_system_message.py,sha256=wm2yZUdhRQD5sQhqPiedWZAPECwYvWOvRy1lbALTfCI,779
|
|
357
357
|
letta_client/types/update_user_message.py,sha256=7K0eNqN-ab2v3rR1FW3LLq7IHk6_0C0lv3zhTtthzzs,860
|
|
358
358
|
letta_client/types/update_user_message_content.py,sha256=dtDUkSRbdYlLBkwU-vqx_pqZHXZ4v5zIDsQupg7jkQk,242
|
|
359
|
-
letta_client/types/usage_statistics.py,sha256=
|
|
359
|
+
letta_client/types/usage_statistics.py,sha256=pks9_EidwQD9gD_bIVxN9JedAbzNCCO6atW7FuvnYsU,1046
|
|
360
|
+
letta_client/types/usage_statistics_completion_token_details.py,sha256=2PypCq-UkJqc3wPVNdenWEBFjD_r5_GbcGxnLH774L4,618
|
|
361
|
+
letta_client/types/usage_statistics_prompt_token_details.py,sha256=c4r4UUIbDI-UO3coX141C9_qCw698E18Zh3emVV3sUA,611
|
|
360
362
|
letta_client/types/user.py,sha256=z_v1uqQ6HYwV_Pp7wDDqS6QWhslHgdUH-AldV-jnmKQ,1349
|
|
361
363
|
letta_client/types/user_create.py,sha256=prQea3xb2-Cm64wv6Y84OfhWNWrA2P8SH5yhUxejzOI,616
|
|
362
364
|
letta_client/types/user_message.py,sha256=vCZK21KYwzpb3QAlN--ViKirmQ5AO5VqSk_FUYmcaX4,1473
|
|
@@ -373,6 +375,6 @@ letta_client/voice/__init__.py,sha256=7hX85553PiRMtIMM12a0DSoFzsglNiUziYR2ekS84Q
|
|
|
373
375
|
letta_client/voice/client.py,sha256=STjswa5oOLoP59QwTJvQwi73kgn0UzKOaXc2CsTRI4k,6912
|
|
374
376
|
letta_client/voice/types/__init__.py,sha256=FRc3iKRTONE4N8Lf1IqvnqWZ2kXdrFFvkL7PxVcR8Ew,212
|
|
375
377
|
letta_client/voice/types/create_voice_chat_completions_request_body.py,sha256=ZLfKgNK1T6IAwLEvaBVFfy7jEAoPUXP28n-nfmHkklc,391
|
|
376
|
-
letta_client-0.1.
|
|
377
|
-
letta_client-0.1.
|
|
378
|
-
letta_client-0.1.
|
|
378
|
+
letta_client-0.1.128.dist-info/METADATA,sha256=gem7WiurovD2HiKMti5yq4PuqOtB253miz9FYdR0tVc,5042
|
|
379
|
+
letta_client-0.1.128.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
|
|
380
|
+
letta_client-0.1.128.dist-info/RECORD,,
|
|
File without changes
|