letta-nightly 0.6.4.dev20241215104129__py3-none-any.whl → 0.6.4.dev20241217104233__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-nightly might be problematic. Click here for more details.
- letta/agent.py +28 -37
- letta/functions/function_sets/base.py +3 -1
- letta/functions/schema_generator.py +1 -5
- letta/local_llm/function_parser.py +1 -1
- letta/orm/__init__.py +1 -1
- letta/orm/agent.py +19 -1
- letta/orm/file.py +3 -2
- letta/orm/mixins.py +3 -14
- letta/orm/organization.py +19 -3
- letta/orm/passage.py +59 -23
- letta/orm/source.py +4 -0
- letta/orm/sqlalchemy_base.py +2 -2
- letta/prompts/system/memgpt_modified_chat.txt +1 -1
- letta/prompts/system/memgpt_modified_o1.txt +1 -1
- letta/schemas/embedding_config.py +20 -2
- letta/schemas/passage.py +1 -1
- letta/server/rest_api/app.py +13 -0
- letta/server/rest_api/utils.py +24 -5
- letta/server/server.py +31 -114
- letta/server/ws_api/server.py +1 -1
- letta/services/agent_manager.py +341 -9
- letta/services/passage_manager.py +76 -100
- letta/settings.py +1 -1
- {letta_nightly-0.6.4.dev20241215104129.dist-info → letta_nightly-0.6.4.dev20241217104233.dist-info}/METADATA +6 -6
- {letta_nightly-0.6.4.dev20241215104129.dist-info → letta_nightly-0.6.4.dev20241217104233.dist-info}/RECORD +28 -28
- {letta_nightly-0.6.4.dev20241215104129.dist-info → letta_nightly-0.6.4.dev20241217104233.dist-info}/LICENSE +0 -0
- {letta_nightly-0.6.4.dev20241215104129.dist-info → letta_nightly-0.6.4.dev20241217104233.dist-info}/WHEEL +0 -0
- {letta_nightly-0.6.4.dev20241215104129.dist-info → letta_nightly-0.6.4.dev20241217104233.dist-info}/entry_points.txt +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
from datetime import datetime
|
|
2
1
|
from typing import List, Optional
|
|
3
|
-
|
|
2
|
+
from datetime import datetime
|
|
4
3
|
import numpy as np
|
|
5
4
|
|
|
5
|
+
from sqlalchemy import select, union_all, literal
|
|
6
|
+
|
|
6
7
|
from letta.constants import MAX_EMBEDDING_DIM
|
|
7
8
|
from letta.embeddings import embedding_model, parse_and_chunk_text
|
|
8
9
|
from letta.orm.errors import NoResultFound
|
|
9
|
-
from letta.orm.passage import
|
|
10
|
+
from letta.orm.passage import AgentPassage, SourcePassage
|
|
10
11
|
from letta.schemas.agent import AgentState
|
|
11
12
|
from letta.schemas.embedding_config import EmbeddingConfig
|
|
12
13
|
from letta.schemas.passage import Passage as PydanticPassage
|
|
@@ -14,6 +15,7 @@ from letta.schemas.user import User as PydanticUser
|
|
|
14
15
|
from letta.utils import enforce_types
|
|
15
16
|
|
|
16
17
|
|
|
18
|
+
|
|
17
19
|
class PassageManager:
|
|
18
20
|
"""Manager class to handle business logic related to Passages."""
|
|
19
21
|
|
|
@@ -26,14 +28,51 @@ class PassageManager:
|
|
|
26
28
|
def get_passage_by_id(self, passage_id: str, actor: PydanticUser) -> Optional[PydanticPassage]:
|
|
27
29
|
"""Fetch a passage by ID."""
|
|
28
30
|
with self.session_maker() as session:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
# Try source passages first
|
|
32
|
+
try:
|
|
33
|
+
passage = SourcePassage.read(db_session=session, identifier=passage_id, actor=actor)
|
|
34
|
+
return passage.to_pydantic()
|
|
35
|
+
except NoResultFound:
|
|
36
|
+
# Try archival passages
|
|
37
|
+
try:
|
|
38
|
+
passage = AgentPassage.read(db_session=session, identifier=passage_id, actor=actor)
|
|
39
|
+
return passage.to_pydantic()
|
|
40
|
+
except NoResultFound:
|
|
41
|
+
raise NoResultFound(f"Passage with id {passage_id} not found in database.")
|
|
31
42
|
|
|
32
43
|
@enforce_types
|
|
33
44
|
def create_passage(self, pydantic_passage: PydanticPassage, actor: PydanticUser) -> PydanticPassage:
|
|
34
|
-
"""Create a new passage."""
|
|
45
|
+
"""Create a new passage in the appropriate table based on whether it has agent_id or source_id."""
|
|
46
|
+
# Common fields for both passage types
|
|
47
|
+
data = pydantic_passage.model_dump()
|
|
48
|
+
common_fields = {
|
|
49
|
+
"id": data.get("id"),
|
|
50
|
+
"text": data["text"],
|
|
51
|
+
"embedding": data["embedding"],
|
|
52
|
+
"embedding_config": data["embedding_config"],
|
|
53
|
+
"organization_id": data["organization_id"],
|
|
54
|
+
"metadata_": data.get("metadata_", {}),
|
|
55
|
+
"is_deleted": data.get("is_deleted", False),
|
|
56
|
+
"created_at": data.get("created_at", datetime.utcnow()),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if "agent_id" in data and data["agent_id"]:
|
|
60
|
+
assert not data.get("source_id"), "Passage cannot have both agent_id and source_id"
|
|
61
|
+
agent_fields = {
|
|
62
|
+
"agent_id": data["agent_id"],
|
|
63
|
+
}
|
|
64
|
+
passage = AgentPassage(**common_fields, **agent_fields)
|
|
65
|
+
elif "source_id" in data and data["source_id"]:
|
|
66
|
+
assert not data.get("agent_id"), "Passage cannot have both agent_id and source_id"
|
|
67
|
+
source_fields = {
|
|
68
|
+
"source_id": data["source_id"],
|
|
69
|
+
"file_id": data.get("file_id"),
|
|
70
|
+
}
|
|
71
|
+
passage = SourcePassage(**common_fields, **source_fields)
|
|
72
|
+
else:
|
|
73
|
+
raise ValueError("Passage must have either agent_id or source_id")
|
|
74
|
+
|
|
35
75
|
with self.session_maker() as session:
|
|
36
|
-
passage = PassageModel(**pydantic_passage.model_dump())
|
|
37
76
|
passage.create(session, actor=actor)
|
|
38
77
|
return passage.to_pydantic()
|
|
39
78
|
|
|
@@ -93,14 +132,23 @@ class PassageManager:
|
|
|
93
132
|
raise ValueError("Passage ID must be provided.")
|
|
94
133
|
|
|
95
134
|
with self.session_maker() as session:
|
|
96
|
-
#
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
135
|
+
# Try source passages first
|
|
136
|
+
try:
|
|
137
|
+
curr_passage = SourcePassage.read(
|
|
138
|
+
db_session=session,
|
|
139
|
+
identifier=passage_id,
|
|
140
|
+
actor=actor,
|
|
141
|
+
)
|
|
142
|
+
except NoResultFound:
|
|
143
|
+
# Try agent passages
|
|
144
|
+
try:
|
|
145
|
+
curr_passage = AgentPassage.read(
|
|
146
|
+
db_session=session,
|
|
147
|
+
identifier=passage_id,
|
|
148
|
+
actor=actor,
|
|
149
|
+
)
|
|
150
|
+
except NoResultFound:
|
|
151
|
+
raise ValueError(f"Passage with id {passage_id} does not exist.")
|
|
104
152
|
|
|
105
153
|
# Update the database record with values from the provided record
|
|
106
154
|
update_data = passage.model_dump(exclude_unset=True, exclude_none=True)
|
|
@@ -113,104 +161,32 @@ class PassageManager:
|
|
|
113
161
|
|
|
114
162
|
@enforce_types
|
|
115
163
|
def delete_passage_by_id(self, passage_id: str, actor: PydanticUser) -> bool:
|
|
116
|
-
"""Delete a passage."""
|
|
164
|
+
"""Delete a passage from either source or archival passages."""
|
|
117
165
|
if not passage_id:
|
|
118
166
|
raise ValueError("Passage ID must be provided.")
|
|
119
167
|
|
|
120
168
|
with self.session_maker() as session:
|
|
169
|
+
# Try source passages first
|
|
121
170
|
try:
|
|
122
|
-
passage =
|
|
171
|
+
passage = SourcePassage.read(db_session=session, identifier=passage_id, actor=actor)
|
|
123
172
|
passage.hard_delete(session, actor=actor)
|
|
173
|
+
return True
|
|
124
174
|
except NoResultFound:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
file_id: Optional[str] = None,
|
|
133
|
-
cursor: Optional[str] = None,
|
|
134
|
-
limit: Optional[int] = 50,
|
|
135
|
-
query_text: Optional[str] = None,
|
|
136
|
-
start_date: Optional[datetime] = None,
|
|
137
|
-
end_date: Optional[datetime] = None,
|
|
138
|
-
ascending: bool = True,
|
|
139
|
-
source_id: Optional[str] = None,
|
|
140
|
-
embed_query: bool = False,
|
|
141
|
-
embedding_config: Optional[EmbeddingConfig] = None,
|
|
142
|
-
) -> List[PydanticPassage]:
|
|
143
|
-
"""List passages with pagination."""
|
|
144
|
-
with self.session_maker() as session:
|
|
145
|
-
filters = {"organization_id": actor.organization_id}
|
|
146
|
-
if agent_id:
|
|
147
|
-
filters["agent_id"] = agent_id
|
|
148
|
-
if file_id:
|
|
149
|
-
filters["file_id"] = file_id
|
|
150
|
-
if source_id:
|
|
151
|
-
filters["source_id"] = source_id
|
|
152
|
-
|
|
153
|
-
embedded_text = None
|
|
154
|
-
if embed_query:
|
|
155
|
-
assert embedding_config is not None
|
|
156
|
-
|
|
157
|
-
# Embed the text
|
|
158
|
-
embedded_text = embedding_model(embedding_config).get_text_embedding(query_text)
|
|
159
|
-
|
|
160
|
-
# Pad the embedding with zeros
|
|
161
|
-
embedded_text = np.array(embedded_text)
|
|
162
|
-
embedded_text = np.pad(embedded_text, (0, MAX_EMBEDDING_DIM - embedded_text.shape[0]), mode="constant").tolist()
|
|
163
|
-
|
|
164
|
-
results = PassageModel.list(
|
|
165
|
-
db_session=session,
|
|
166
|
-
cursor=cursor,
|
|
167
|
-
start_date=start_date,
|
|
168
|
-
end_date=end_date,
|
|
169
|
-
limit=limit,
|
|
170
|
-
ascending=ascending,
|
|
171
|
-
query_text=query_text if not embedded_text else None,
|
|
172
|
-
query_embedding=embedded_text,
|
|
173
|
-
**filters,
|
|
174
|
-
)
|
|
175
|
-
return [p.to_pydantic() for p in results]
|
|
176
|
-
|
|
177
|
-
@enforce_types
|
|
178
|
-
def size(self, actor: PydanticUser, agent_id: Optional[str] = None, **kwargs) -> int:
|
|
179
|
-
"""Get the total count of messages with optional filters.
|
|
180
|
-
|
|
181
|
-
Args:
|
|
182
|
-
actor : The user requesting the count
|
|
183
|
-
agent_id: The agent ID
|
|
184
|
-
"""
|
|
185
|
-
with self.session_maker() as session:
|
|
186
|
-
return PassageModel.size(db_session=session, actor=actor, agent_id=agent_id, **kwargs)
|
|
175
|
+
# Try archival passages
|
|
176
|
+
try:
|
|
177
|
+
passage = AgentPassage.read(db_session=session, identifier=passage_id, actor=actor)
|
|
178
|
+
passage.hard_delete(session, actor=actor)
|
|
179
|
+
return True
|
|
180
|
+
except NoResultFound:
|
|
181
|
+
raise NoResultFound(f"Passage with id {passage_id} not found.")
|
|
187
182
|
|
|
188
183
|
def delete_passages(
|
|
189
184
|
self,
|
|
190
185
|
actor: PydanticUser,
|
|
191
|
-
|
|
192
|
-
file_id: Optional[str] = None,
|
|
193
|
-
start_date: Optional[datetime] = None,
|
|
194
|
-
end_date: Optional[datetime] = None,
|
|
195
|
-
limit: Optional[int] = 50,
|
|
196
|
-
cursor: Optional[str] = None,
|
|
197
|
-
query_text: Optional[str] = None,
|
|
198
|
-
source_id: Optional[str] = None,
|
|
186
|
+
passages: List[PydanticPassage],
|
|
199
187
|
) -> bool:
|
|
200
|
-
|
|
201
|
-
passages = self.list_passages(
|
|
202
|
-
actor=actor,
|
|
203
|
-
agent_id=agent_id,
|
|
204
|
-
file_id=file_id,
|
|
205
|
-
cursor=cursor,
|
|
206
|
-
limit=limit,
|
|
207
|
-
start_date=start_date,
|
|
208
|
-
end_date=end_date,
|
|
209
|
-
query_text=query_text,
|
|
210
|
-
source_id=source_id,
|
|
211
|
-
)
|
|
212
|
-
|
|
213
188
|
# TODO: This is very inefficient
|
|
214
189
|
# TODO: We should have a base `delete_all_matching_filters`-esque function
|
|
215
190
|
for passage in passages:
|
|
216
191
|
self.delete_passage_by_id(passage_id=passage.id, actor=actor)
|
|
192
|
+
return True
|
letta/settings.py
CHANGED
|
@@ -91,7 +91,7 @@ class Settings(BaseSettings):
|
|
|
91
91
|
return f"postgresql+pg8000://letta:letta@localhost:5432/letta"
|
|
92
92
|
|
|
93
93
|
# add this property to avoid being returned the default
|
|
94
|
-
# reference: https://github.com/
|
|
94
|
+
# reference: https://github.com/letta-ai/letta/issues/1362
|
|
95
95
|
@property
|
|
96
96
|
def letta_pg_uri_no_default(self) -> str:
|
|
97
97
|
if self.pg_uri:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: letta-nightly
|
|
3
|
-
Version: 0.6.4.
|
|
3
|
+
Version: 0.6.4.dev20241217104233
|
|
4
4
|
Summary: Create LLM agents with long-term memory and custom tools
|
|
5
5
|
License: Apache License
|
|
6
6
|
Author: Letta Team
|
|
@@ -167,7 +167,7 @@ Once the Letta server is running, you can access it via port `8283` (e.g. sendin
|
|
|
167
167
|
> [!NOTE]
|
|
168
168
|
> The Letta ADE is a graphical user interface for creating, deploying, interacting and observing with your Letta agents.
|
|
169
169
|
>
|
|
170
|
-
> For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to
|
|
170
|
+
> For example, if you're running a Letta server to power an end-user application (such as a customer support chatbot), you can use the ADE to test, debug, and observe the agents in your server. You can also use the ADE as a general chat interface to interact with your Letta agents.
|
|
171
171
|
|
|
172
172
|
<p align="center">
|
|
173
173
|
<picture>
|
|
@@ -221,7 +221,7 @@ No, you can install Letta using `pip` (via `pip install -U letta`), as well as f
|
|
|
221
221
|
|
|
222
222
|
Letta gives your agents persistence (they live indefinitely) by storing all your agent data in a database. Letta is designed to be used with a [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) (the world's most popular database), however, it is not possible to install PostgreSQL via `pip`, so the `pip` install of Letta defaults to using [SQLite](https://www.sqlite.org/). If you have a PostgreSQL instance running on your own computer, you can still connect Letta (installed via `pip`) to PostgreSQL by setting the environment variable `LETTA_PG_URI`.
|
|
223
223
|
|
|
224
|
-
**Database migrations are not officially supported for Letta when using SQLite**, so you would like to ensure that
|
|
224
|
+
**Database migrations are not officially supported for Letta when using SQLite**, so if you would like to ensure that you're able to upgrade to the latest Letta version and migrate your Letta agents data, make sure that you're using PostgreSQL as your Letta database backend. Full compatability table below:
|
|
225
225
|
|
|
226
226
|
| Installation method | Start server command | Database backend | Data migrations supported? |
|
|
227
227
|
|---|---|---|---|
|
|
@@ -293,7 +293,7 @@ Hit enter to begin (will request first Letta message)
|
|
|
293
293
|
## ⚡ Quickstart (pip)
|
|
294
294
|
|
|
295
295
|
> [!WARNING]
|
|
296
|
-
> **Database migrations are not officially
|
|
296
|
+
> **Database migrations are not officially supported with `SQLite`**
|
|
297
297
|
>
|
|
298
298
|
> When you install Letta with `pip`, the default database backend is `SQLite` (you can still use an external `postgres` service with your `pip` install of Letta by setting `LETTA_PG_URI`).
|
|
299
299
|
>
|
|
@@ -303,7 +303,7 @@ Hit enter to begin (will request first Letta message)
|
|
|
303
303
|
|
|
304
304
|
<summary>View instructions for installing with pip</summary>
|
|
305
305
|
|
|
306
|
-
You can also install Letta with `pip`, will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
|
|
306
|
+
You can also install Letta with `pip`, which will default to using `SQLite` for the database backends (whereas Docker will default to using `postgres`).
|
|
307
307
|
|
|
308
308
|
### Step 1 - Install Letta using `pip`
|
|
309
309
|
```sh
|
|
@@ -377,7 +377,7 @@ Letta is an open source project built by over a hundred contributors. There are
|
|
|
377
377
|
|
|
378
378
|
* **Contribute to the project**: Interested in contributing? Start by reading our [Contribution Guidelines](https://github.com/cpacker/MemGPT/tree/main/CONTRIBUTING.md).
|
|
379
379
|
* **Ask a question**: Join our community on [Discord](https://discord.gg/letta) and direct your questions to the `#support` channel.
|
|
380
|
-
* **Report
|
|
380
|
+
* **Report issues or suggest features**: Have an issue or a feature request? Please submit them through our [GitHub Issues page](https://github.com/cpacker/MemGPT/issues).
|
|
381
381
|
* **Explore the roadmap**: Curious about future developments? View and comment on our [project roadmap](https://github.com/cpacker/MemGPT/issues/1533).
|
|
382
382
|
* **Join community events**: Stay updated with the [event calendar](https://lu.ma/berkeley-llm-meetup) or follow our [Twitter account](https://twitter.com/Letta_AI).
|
|
383
383
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
letta/__init__.py,sha256=35NM-KIYubYvjLNsP6WHh70k7F5yDmwZ7x0E7Qm0dwg,1014
|
|
2
2
|
letta/__main__.py,sha256=6Hs2PV7EYc5Tid4g4OtcLXhqVHiNYTGzSBdoOnW2HXA,29
|
|
3
|
-
letta/agent.py,sha256=
|
|
3
|
+
letta/agent.py,sha256=UI6_FobXC95kamzQXx8mrx4C0lH9ASnIez7MHW9YNHE,77498
|
|
4
4
|
letta/benchmark/benchmark.py,sha256=ebvnwfp3yezaXOQyGXkYCDYpsmre-b9hvNtnyx4xkG0,3701
|
|
5
5
|
letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
|
|
6
6
|
letta/chat_only_agent.py,sha256=3wBCzddcfF6IMbPdDtTZFze5-HJSYxHd8w6jkkSwzsw,4628
|
|
@@ -19,11 +19,11 @@ letta/data_sources/connectors_helper.py,sha256=2TQjCt74fCgT5sw1AP8PalDEk06jPBbhr
|
|
|
19
19
|
letta/embeddings.py,sha256=XyecUdJaG3ENi5v3wAexVcgpG2g7_oTEEYLgUpm-Zvs,9080
|
|
20
20
|
letta/errors.py,sha256=Voy_BP0W_M816-vWudKLBlgydRufPPA-Q2PNd-SvZYc,3897
|
|
21
21
|
letta/functions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
22
|
-
letta/functions/function_sets/base.py,sha256=
|
|
22
|
+
letta/functions/function_sets/base.py,sha256=_zXCIPgSefTSt-tYOSi-EP5jWlnFbT5m2sHWdfVInPc,9693
|
|
23
23
|
letta/functions/function_sets/extras.py,sha256=Jik3UiDqYTm4Lam1XPTvuVjvgUHwIAhopsnbmVhGMBg,4732
|
|
24
24
|
letta/functions/functions.py,sha256=evH6GKnIJwVVre1Xre2gaSIqREv4eNM4DiWOhn8PMqg,3299
|
|
25
25
|
letta/functions/helpers.py,sha256=fJo4gPvWpkvR7jn0HucRorz4VlpYVqmYsiX1RetnnSY,8569
|
|
26
|
-
letta/functions/schema_generator.py,sha256=
|
|
26
|
+
letta/functions/schema_generator.py,sha256=YtjN1S9eKrhmE9Q442jt2WOH5JrWPwBM-jAA_peqbaU,19276
|
|
27
27
|
letta/helpers/__init__.py,sha256=p0luQ1Oe3Skc6sH4O58aHHA3Qbkyjifpuq0DZ1GAY0U,59
|
|
28
28
|
letta/helpers/tool_rule_solver.py,sha256=YCwawbRUQw10ZVR17WYXo8b5roxdGe-B5nNVMqlAgBE,4826
|
|
29
29
|
letta/humans/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -44,7 +44,7 @@ letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
|
|
|
44
44
|
letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
45
|
letta/local_llm/chat_completion_proxy.py,sha256=SiohxsjGTku4vOryOZx7I0t0xoO_sUuhXgoe62fKq3c,12995
|
|
46
46
|
letta/local_llm/constants.py,sha256=GIu0184EIiOLEqGeupLUYQvkgT_imIjLg3T-KM9TcFM,1125
|
|
47
|
-
letta/local_llm/function_parser.py,sha256=
|
|
47
|
+
letta/local_llm/function_parser.py,sha256=0P6xn2Dk0jMoYK90NACfNZqx_ymRPBy3VLq9lal-mLQ,2627
|
|
48
48
|
letta/local_llm/grammars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
49
|
letta/local_llm/grammars/gbnf_grammar_generator.py,sha256=zrATMMTZ3Trhg3egnk7N7p5qwH90hmfT_TVV7tjabGI,56377
|
|
50
50
|
letta/local_llm/grammars/json.gbnf,sha256=LNnIFYaChKuE7GU9H7tLThVi8vFnZNzrFJYBU7_HVsY,667
|
|
@@ -85,8 +85,8 @@ letta/offline_memory_agent.py,sha256=swCkuUB8IsSfMFGr41QTwlKo63s6JOFMgiaB59FFw6o
|
|
|
85
85
|
letta/openai_backcompat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
86
|
letta/openai_backcompat/openai_object.py,sha256=Y1ZS1sATP60qxJiOsjOP3NbwSzuzvkNAvb3DeuhM5Uk,13490
|
|
87
87
|
letta/orm/__all__.py,sha256=2gh2MZTkA3Hw67VWVKK3JIStJOqTeLdpCvYSVYNeEDA,692
|
|
88
|
-
letta/orm/__init__.py,sha256=
|
|
89
|
-
letta/orm/agent.py,sha256=
|
|
88
|
+
letta/orm/__init__.py,sha256=TVs1_QQAa8fBOOVJvqU4FDdqvL6-1AqIuvIuOHNoL1E,698
|
|
89
|
+
letta/orm/agent.py,sha256=NpqDEPHfC1mM_pcMi16_XInKFPPiHsSACmJIAcUFcVs,5787
|
|
90
90
|
letta/orm/agents_tags.py,sha256=dYSnHz4IWBjyOiQ4RJomX3P0QN76JTlEZEw5eJM6Emg,925
|
|
91
91
|
letta/orm/base.py,sha256=K_LpNUURbsj44ycHbzvNXG_n8pBOjf1YvDaikIPDpQA,2716
|
|
92
92
|
letta/orm/block.py,sha256=U2fOXdab9ynQscOqzUo3xv1a_GjqHLIgoNSZq-U0mYg,3308
|
|
@@ -94,16 +94,16 @@ letta/orm/blocks_agents.py,sha256=W0dykl9OchAofSuAYZD5zNmhyMabPr9LTJrz-I3A0m4,98
|
|
|
94
94
|
letta/orm/custom_columns.py,sha256=EEiPx9AuMI4JeLmGAOD8L_XWh4JwQB166zBJHuJmQS0,4891
|
|
95
95
|
letta/orm/enums.py,sha256=KfHcFt_fR6GUmSlmfsa-TetvmuRxGESNve8MStRYW64,145
|
|
96
96
|
letta/orm/errors.py,sha256=nv1HnF3z4-u9m_g7SO5TO5u2nmJN677_n8F0iIjluUI,460
|
|
97
|
-
letta/orm/file.py,sha256=
|
|
97
|
+
letta/orm/file.py,sha256=0qfqmBFizwtYriCz_qrshjxw3A9lMaRFKtwsZecviyo,1765
|
|
98
98
|
letta/orm/job.py,sha256=If-qSTJW4t5h-6Jolw3tS3-xMZEaPIbXe3S0GMf_FXI,1102
|
|
99
99
|
letta/orm/message.py,sha256=yWf46-adgYGqhxjn_QREW19jvVjYU0eD11uwlVSrdT4,1490
|
|
100
|
-
letta/orm/mixins.py,sha256=
|
|
101
|
-
letta/orm/organization.py,sha256=
|
|
102
|
-
letta/orm/passage.py,sha256=
|
|
100
|
+
letta/orm/mixins.py,sha256=fBT4WjKDfDgGkkOHD8lFAaofDKElTLOx3oM1d6yQHSk,1620
|
|
101
|
+
letta/orm/organization.py,sha256=PSu9pHBT_YYdZo7Z7AZBBM4veOzD7x2H2NYN4SjD82E,2519
|
|
102
|
+
letta/orm/passage.py,sha256=fsETrGtmiGI45N5Rc2pMLy-9Mzggn6FZ-fRwI-0x-Hg,3249
|
|
103
103
|
letta/orm/sandbox_config.py,sha256=PCMHE-eJPzBT-90OYtXjEMRF4f9JB8AJIGETE7bu-f0,2870
|
|
104
|
-
letta/orm/source.py,sha256=
|
|
104
|
+
letta/orm/source.py,sha256=SlX08BnoJYMh34cGTuPbo2kraCuXSy25xGdNWb7d7DQ,1782
|
|
105
105
|
letta/orm/sources_agents.py,sha256=q5Wf5TFNI9KH6cGW93roNhvFD3n39UE2bYQhnSJwlME,433
|
|
106
|
-
letta/orm/sqlalchemy_base.py,sha256=
|
|
106
|
+
letta/orm/sqlalchemy_base.py,sha256=lP3KVyafy1SX5Q95mdBgmszjd1uufD-OnBX6H0G_PyU,17508
|
|
107
107
|
letta/orm/sqlite_functions.py,sha256=PVJXVw_e3cC5yIWkfsCP_yBjuXwIniLEGdXP6lx6Wgs,4380
|
|
108
108
|
letta/orm/tool.py,sha256=qvDul85Gq0XORx6gyMGk0As3C1bSt9nASqezdPOikQ4,2216
|
|
109
109
|
letta/orm/tools_agents.py,sha256=r6t-V21w2_mG8n38zuUb5jOi_3hRxsjgezsLA4sg0m4,626
|
|
@@ -130,15 +130,15 @@ letta/prompts/system/memgpt_convo_only.txt,sha256=0cmlDNtjZ_YlUVElzM4gzwCh16uwVB
|
|
|
130
130
|
letta/prompts/system/memgpt_doc.txt,sha256=AsT55NOORoH-K-p0fxklrDRZ3qHs4MIKMuR-M4SSU4E,4768
|
|
131
131
|
letta/prompts/system/memgpt_gpt35_extralong.txt,sha256=FheNhYoIzNz6qnJKhVquZVSMj3HduC48reFaX7Pf7ig,5046
|
|
132
132
|
letta/prompts/system/memgpt_intuitive_knowledge.txt,sha256=sA7c3urYqREVnSBI81nTGImXAekqC0Fxc7RojFqud1g,2966
|
|
133
|
-
letta/prompts/system/memgpt_modified_chat.txt,sha256=
|
|
134
|
-
letta/prompts/system/memgpt_modified_o1.txt,sha256=
|
|
133
|
+
letta/prompts/system/memgpt_modified_chat.txt,sha256=F_yD4ZcR4aGDE3Z98tI7e609GYekY-fEYomNsCcuV6o,4656
|
|
134
|
+
letta/prompts/system/memgpt_modified_o1.txt,sha256=objnDgnxpF3-MmU28ZqZ7-TOG8UlHBM_HMyAdSDWK88,5492
|
|
135
135
|
letta/prompts/system/memgpt_offline_memory.txt,sha256=rWEJeF-6aiinjkJM9hgLUYCmlEcC_HekYB1bjEUYq6M,2460
|
|
136
136
|
letta/prompts/system/memgpt_offline_memory_chat.txt,sha256=ituh7gDuio7nC2UKFB7GpBq6crxb8bYedQfJ0ADoPgg,3949
|
|
137
137
|
letta/providers.py,sha256=0j6WPRn70WNSOjWS7smhTI3ZZOlfVAVF0ZFcrdQDmMY,25321
|
|
138
138
|
letta/pytest.ini,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
139
|
letta/schemas/agent.py,sha256=amul3_5fVcut0wB9_wnuAjYpWe-ERAHuMpDZUQcOD4E,8715
|
|
140
140
|
letta/schemas/block.py,sha256=pVDH8jr5r-oxdX4cK9dX2wXyLBzgGKQOBWOzqZSeBog,5944
|
|
141
|
-
letta/schemas/embedding_config.py,sha256=
|
|
141
|
+
letta/schemas/embedding_config.py,sha256=u6n-MjUgLfKeDCMdG8f_7qCxJBxo0I8d3KIggmhwjfA,3236
|
|
142
142
|
letta/schemas/enums.py,sha256=F396hXs57up4Jqj1vwWVknMpoVo7MkccVBALvKGHPpE,1032
|
|
143
143
|
letta/schemas/file.py,sha256=ChN2CWzLI2TT9WLItcfElEH0E8b7kzPylF2OQBr6Beg,1550
|
|
144
144
|
letta/schemas/health.py,sha256=zT6mYovvD17iJRuu2rcaQQzbEEYrkwvAE9TB7iU824c,139
|
|
@@ -156,7 +156,7 @@ letta/schemas/openai/chat_completions.py,sha256=V0ZPIIk-ds3O6MAkNHMz8zh1hqMFSPrT
|
|
|
156
156
|
letta/schemas/openai/embedding_response.py,sha256=WKIZpXab1Av7v6sxKG8feW3ZtpQUNosmLVSuhXYa_xU,357
|
|
157
157
|
letta/schemas/openai/openai.py,sha256=Hilo5BiLAGabzxCwnwfzK5QrWqwYD8epaEKFa4Pwndk,7970
|
|
158
158
|
letta/schemas/organization.py,sha256=d2oN3IK2HeruEHKXwIzCbJ3Fxdi_BEe9JZ8J9aDbHwQ,698
|
|
159
|
-
letta/schemas/passage.py,sha256=
|
|
159
|
+
letta/schemas/passage.py,sha256=t_bSI8hpEuh-mj8bV8qOiIA1tAgyjGKrZMVe9l5oIaY,3675
|
|
160
160
|
letta/schemas/sandbox_config.py,sha256=d-eCsU7oLAAnzZbVgZsAV3O6LN16H2vmSh-Drik9jmw,5609
|
|
161
161
|
letta/schemas/source.py,sha256=B1VbaDJV-EGPv1nQXwCx_RAzeAJd50UqP_1m1cIRT8c,2854
|
|
162
162
|
letta/schemas/tool.py,sha256=_9_JkGSlIn2PCbyJ18aQrNueZgxHFUT093GcJSWYqT4,10346
|
|
@@ -167,7 +167,7 @@ letta/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
167
167
|
letta/server/constants.py,sha256=yAdGbLkzlOU_dLTx0lKDmAnj0ZgRXCEaIcPJWO69eaE,92
|
|
168
168
|
letta/server/generate_openapi_schema.sh,sha256=0OtBhkC1g6CobVmNEd_m2B6sTdppjbJLXaM95icejvE,371
|
|
169
169
|
letta/server/rest_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
|
-
letta/server/rest_api/app.py,sha256=
|
|
170
|
+
letta/server/rest_api/app.py,sha256=ZINnNkdR3SV6rtzAYrsvXX2FQPNuD1yOSrkxGPuauJM,10408
|
|
171
171
|
letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
172
172
|
letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
|
|
173
173
|
letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
|
|
@@ -191,8 +191,8 @@ letta/server/rest_api/routers/v1/sources.py,sha256=bLvxyYBOLx1VD5YPuoCBrQrua0Aru
|
|
|
191
191
|
letta/server/rest_api/routers/v1/tools.py,sha256=wG-9pUyQa8b9sIk7mG8qPu_mcVGH44B8JmIKfI3NQ1U,11767
|
|
192
192
|
letta/server/rest_api/routers/v1/users.py,sha256=EBQe9IfCG3kzHpKmotz4yVGZioXz3SCSRy5yEhJK8hU,2293
|
|
193
193
|
letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
|
|
194
|
-
letta/server/rest_api/utils.py,sha256=
|
|
195
|
-
letta/server/server.py,sha256
|
|
194
|
+
letta/server/rest_api/utils.py,sha256=5GO52-3EehRFZPDkvk4pUoHa0GZXvbPuQsmX298gbJg,3905
|
|
195
|
+
letta/server/server.py,sha256=8WO6ozUrl4K_zdiOmjFWTZsv6xwZhbY4KVrtpllyNCk,58609
|
|
196
196
|
letta/server/startup.sh,sha256=722uKJWB2C4q3vjn39De2zzPacaZNw_1fN1SpLGjKIo,1569
|
|
197
197
|
letta/server/static_files/assets/index-048c9598.js,sha256=mR16XppvselwKCcNgONs4L7kZEVa4OEERm4lNZYtLSk,146819
|
|
198
198
|
letta/server/static_files/assets/index-0e31b727.css,sha256=DjG3J3RSFLcinzoisOYYLiyTAIe5Uaxge3HE-DmQIsU,7688
|
|
@@ -204,15 +204,15 @@ letta/server/ws_api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
204
204
|
letta/server/ws_api/example_client.py,sha256=95AA5UFgTlNJ0FUQkLxli8dKNx48MNm3eWGlSgKaWEk,4064
|
|
205
205
|
letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRoMa4,4120
|
|
206
206
|
letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
|
|
207
|
-
letta/server/ws_api/server.py,sha256=
|
|
207
|
+
letta/server/ws_api/server.py,sha256=cBSzf-V4zT1bL_0i54OTI3cMXhTIIxqjSRF8pYjk7fg,5835
|
|
208
208
|
letta/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
|
-
letta/services/agent_manager.py,sha256=
|
|
209
|
+
letta/services/agent_manager.py,sha256=eYXiL5MetvHf0s82fGPFd49JKKTYmp3qA_hE1gQWHyk,30523
|
|
210
210
|
letta/services/block_manager.py,sha256=HUj9HKW2LvAsENEsgCO3Pf3orvSy6XOimev38VKmRZ8,4929
|
|
211
211
|
letta/services/helpers/agent_manager_helper.py,sha256=4AoJJI3ELDZrfhx38vc2OwgQflb7mkdppucln0MkgYg,3457
|
|
212
212
|
letta/services/job_manager.py,sha256=FrkSXloke48CZKuzlYdysxM5gKWoTu7FRigPrs_YW4A,3645
|
|
213
213
|
letta/services/message_manager.py,sha256=ucFJLbK835YSfEENoxdKB3wPZgO-NYFO9EvDV0W-sc0,7682
|
|
214
214
|
letta/services/organization_manager.py,sha256=hJI86_FErkRaW-VLBBmvmmciIXN59LN0mEMm78C36kQ,3331
|
|
215
|
-
letta/services/passage_manager.py,sha256=
|
|
215
|
+
letta/services/passage_manager.py,sha256=3wR9ZV3nIkJ-oSywA2SVR2yLoNe2Nv5WyfaLtoNN5i8,7867
|
|
216
216
|
letta/services/per_agent_lock_manager.py,sha256=porM0cKKANQ1FvcGXOO_qM7ARk5Fgi1HVEAhXsAg9-4,546
|
|
217
217
|
letta/services/sandbox_config_manager.py,sha256=USTXwEEWexKRZjng4NepP4_eetrxCJ5n16cl2AHJ_VM,13220
|
|
218
218
|
letta/services/source_manager.py,sha256=ZtLQikeJjwAq49f0d4WxUzyUN3LZBqWCZI4a-AzEMWQ,7643
|
|
@@ -220,13 +220,13 @@ letta/services/tool_execution_sandbox.py,sha256=XaP3-Bsw1TJ-6btFdWJ_DwOnX6QOxE9o
|
|
|
220
220
|
letta/services/tool_manager.py,sha256=lfrfWyxiFUWcEf-nATHs7r76XWutMYbOPyePs543ZOo,7681
|
|
221
221
|
letta/services/tool_sandbox_env/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
222
|
letta/services/user_manager.py,sha256=oqLF9C4mGbN0TaGj7wMpb2RH2bUg6OJJcdyaWv370rQ,4272
|
|
223
|
-
letta/settings.py,sha256=
|
|
223
|
+
letta/settings.py,sha256=72WZ1KdXkMNJfraaK9jZJQx16Rhi_VSf2mcLuFKfX_4,3713
|
|
224
224
|
letta/streaming_interface.py,sha256=_FPUWy58j50evHcpXyd7zB1wWqeCc71NCFeWh_TBvnw,15736
|
|
225
225
|
letta/streaming_utils.py,sha256=329fsvj1ZN0r0LpQtmMPZ2vSxkDBIUUwvGHZFkjm2I8,11745
|
|
226
226
|
letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
|
|
227
227
|
letta/utils.py,sha256=Z2OOxSJbiLSlcGzYiX9gBCv-jfkDjew_J_qaOrLIyx4,32947
|
|
228
|
-
letta_nightly-0.6.4.
|
|
229
|
-
letta_nightly-0.6.4.
|
|
230
|
-
letta_nightly-0.6.4.
|
|
231
|
-
letta_nightly-0.6.4.
|
|
232
|
-
letta_nightly-0.6.4.
|
|
228
|
+
letta_nightly-0.6.4.dev20241217104233.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
|
|
229
|
+
letta_nightly-0.6.4.dev20241217104233.dist-info/METADATA,sha256=OSirAVVNOZTfu8Wc_RNo_0pMhhdg3CyduV0nHUNbw4M,21695
|
|
230
|
+
letta_nightly-0.6.4.dev20241217104233.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
|
231
|
+
letta_nightly-0.6.4.dev20241217104233.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
|
|
232
|
+
letta_nightly-0.6.4.dev20241217104233.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|