letta-nightly 0.1.7.dev20240925104133__py3-none-any.whl → 0.1.7.dev20240926104108__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/cli/cli.py CHANGED
@@ -492,7 +492,7 @@ def run(
492
492
  # agent_config = AgentConfig.load(agent)
493
493
  # agent_state = ms.get_agent(agent_name=agent, user_id=user_id)
494
494
  printd("Loading agent state:", agent_state.id)
495
- printd("Agent state:", agent_state.state)
495
+ printd("Agent state:", agent_state.name)
496
496
  # printd("State path:", agent_config.save_state_dir())
497
497
  # printd("Persistent manager path:", agent_config.save_persistence_manager_dir())
498
498
  # printd("Index path:", agent_config.save_agent_index_dir())
@@ -549,6 +549,7 @@ def run(
549
549
  )
550
550
 
551
551
  # create agent
552
+ tools = [ms.get_tool(tool_name, user_id=client.user_id) for tool_name in agent_state.tools]
552
553
  letta_agent = Agent(agent_state=agent_state, interface=interface(), tools=tools)
553
554
 
554
555
  else: # create new agent
letta/client/client.py CHANGED
@@ -5,7 +5,6 @@ from typing import Callable, Dict, Generator, List, Optional, Union
5
5
  import requests
6
6
 
7
7
  import letta.utils
8
- from letta.config import LettaConfig
9
8
  from letta.constants import BASE_TOOLS, DEFAULT_HUMAN, DEFAULT_PERSONA
10
9
  from letta.data_sources.connectors import DataConnector
11
10
  from letta.functions.functions import parse_source_code
@@ -42,7 +41,6 @@ from letta.schemas.openai.chat_completions import ToolCall
42
41
  from letta.schemas.passage import Passage
43
42
  from letta.schemas.source import Source, SourceCreate, SourceUpdate
44
43
  from letta.schemas.tool import Tool, ToolCreate, ToolUpdate
45
- from letta.schemas.user import UserCreate
46
44
  from letta.server.rest_api.interface import QueuingInterface
47
45
  from letta.server.server import SyncServer
48
46
  from letta.utils import get_human_text, get_persona_text
@@ -1112,6 +1110,7 @@ class RESTClient(AbstractClient):
1112
1110
  params = {"agent_id": str(agent_id)}
1113
1111
  response = requests.post(f"{self.base_url}/{self.api_prefix}/sources/{source_id}/detach", params=params, headers=self.headers)
1114
1112
  assert response.status_code == 200, f"Failed to detach source from agent: {response.text}"
1113
+ return Source(**response.json())
1115
1114
 
1116
1115
  # server configuration commands
1117
1116
 
@@ -2084,7 +2083,8 @@ class LocalClient(AbstractClient):
2084
2083
  Returns:
2085
2084
  job (Job): Data loading job including job status and metadata
2086
2085
  """
2087
- job = self.server.create_job(user_id=self.user_id)
2086
+ metadata_ = {"type": "embedding", "filename": filename, "source_id": source_id}
2087
+ job = self.server.create_job(user_id=self.user_id, metadata=metadata_)
2088
2088
 
2089
2089
  # TODO: implement blocking vs. non-blocking
2090
2090
  self.server.load_file_to_source(source_id=source_id, file_path=filename, job_id=job.id)
@@ -2159,7 +2159,16 @@ class LocalClient(AbstractClient):
2159
2159
  self.server.attach_source_to_agent(source_id=source_id, source_name=source_name, agent_id=agent_id, user_id=self.user_id)
2160
2160
 
2161
2161
  def detach_source_from_agent(self, agent_id: str, source_id: Optional[str] = None, source_name: Optional[str] = None):
2162
- self.server.detach_source_from_agent(source_id=source_id, source_name=source_name, agent_id=agent_id, user_id=self.user_id)
2162
+ """
2163
+ Detach a source from an agent by removing all `Passage` objects that were loaded from the source from archival memory.
2164
+ Args:
2165
+ agent_id (str): ID of the agent
2166
+ source_id (str): ID of the source
2167
+ source_name (str): Name of the source
2168
+ Returns:
2169
+ source (Source): Detached source
2170
+ """
2171
+ return self.server.detach_source_from_agent(source_id=source_id, source_name=source_name, agent_id=agent_id, user_id=self.user_id)
2163
2172
 
2164
2173
  def list_sources(self) -> List[Source]:
2165
2174
  """
@@ -313,6 +313,7 @@ def create(
313
313
  if "inference.memgpt.ai" in llm_config.model_endpoint:
314
314
  # override user id for inference.memgpt.ai
315
315
  import uuid
316
+
316
317
  data.user = str(uuid.UUID(int=0))
317
318
 
318
319
  if stream: # Client requested token streaming
letta/schemas/job.py CHANGED
@@ -10,7 +10,7 @@ from letta.utils import get_utc_time
10
10
 
11
11
  class JobBase(LettaBase):
12
12
  __id_prefix__ = "job"
13
- metadata_: Optional[dict] = Field({}, description="The metadata of the job.")
13
+ metadata_: Optional[dict] = Field(None, description="The metadata of the job.")
14
14
 
15
15
 
16
16
  class Job(JobBase):
@@ -43,7 +43,7 @@ class LLMConfig(BaseModel):
43
43
  model_wrapper=None,
44
44
  context_window=128000,
45
45
  )
46
- elif model_name == "letta":
46
+ elif model_name == "letta":
47
47
  return cls(
48
48
  model="memgpt-openai",
49
49
  model_endpoint_type="openai",
@@ -1,10 +1,8 @@
1
1
  import json
2
2
  import logging
3
- import secrets
4
3
  from pathlib import Path
5
4
  from typing import Optional
6
5
 
7
- import typer
8
6
  import uvicorn
9
7
  from fastapi import FastAPI, Request
10
8
  from fastapi.responses import JSONResponse
@@ -1,6 +1,6 @@
1
- from typing import List
1
+ from typing import List, Optional
2
2
 
3
- from fastapi import APIRouter, Depends
3
+ from fastapi import APIRouter, Depends, Query
4
4
 
5
5
  from letta.schemas.job import Job
6
6
  from letta.server.rest_api.utils import get_letta_server
@@ -12,6 +12,7 @@ router = APIRouter(prefix="/jobs", tags=["jobs"])
12
12
  @router.get("/", response_model=List[Job], operation_id="list_jobs")
13
13
  def list_jobs(
14
14
  server: "SyncServer" = Depends(get_letta_server),
15
+ source_id: Optional[str] = Query(None, description="Only list jobs associated with the source."),
15
16
  ):
16
17
  """
17
18
  List all jobs.
@@ -19,7 +20,14 @@ def list_jobs(
19
20
  actor = server.get_current_user()
20
21
 
21
22
  # TODO: add filtering by status
22
- return server.list_jobs(user_id=actor.id)
23
+ jobs = server.list_jobs(user_id=actor.id)
24
+
25
+ # TODO: eventually use ORM
26
+ # results = session.query(JobModel).filter(JobModel.user_id == user_id, JobModel.metadata_["source_id"].astext == sourced_id).all()
27
+ if source_id:
28
+ # can't be in the ORM since we have source_id stored in the metadata_
29
+ jobs = [job for job in jobs if job.metadata_.get("source_id") == source_id]
30
+ return jobs
23
31
 
24
32
 
25
33
  @router.get("/active", response_model=List[Job], operation_id="list_active_jobs")
@@ -114,7 +114,7 @@ def attach_source_to_agent(
114
114
  return source
115
115
 
116
116
 
117
- @router.post("/{source_id}/detach", response_model=None, operation_id="detach_agent_from_source")
117
+ @router.post("/{source_id}/detach", response_model=Source, operation_id="detach_agent_from_source")
118
118
  def detach_source_from_agent(
119
119
  source_id: str,
120
120
  agent_id: str = Query(..., description="The unique identifier of the agent to detach the source from."),
@@ -125,7 +125,7 @@ def detach_source_from_agent(
125
125
  """
126
126
  actor = server.get_current_user()
127
127
 
128
- server.detach_source_from_agent(source_id=source_id, agent_id=agent_id, user_id=actor.id)
128
+ return server.detach_source_from_agent(source_id=source_id, agent_id=agent_id, user_id=actor.id)
129
129
 
130
130
 
131
131
  @router.post("/{source_id}/upload", response_model=Job, operation_id="upload_file_to_source")
letta/server/server.py CHANGED
@@ -6,7 +6,7 @@ import traceback
6
6
  import warnings
7
7
  from abc import abstractmethod
8
8
  from datetime import datetime
9
- from typing import Callable, List, Optional, Tuple, Union
9
+ from typing import Callable, Dict, List, Optional, Tuple, Union
10
10
 
11
11
  from fastapi import HTTPException
12
12
 
@@ -1043,7 +1043,7 @@ class SyncServer(Server):
1043
1043
  existing_block = existing_blocks[0]
1044
1044
  assert len(existing_blocks) == 1
1045
1045
  if update:
1046
- return self.update_block(UpdateBlock(id=existing_block.id, **vars(request)), user_id)
1046
+ return self.update_block(UpdateBlock(id=existing_block.id, **vars(request)))
1047
1047
  else:
1048
1048
  raise ValueError(f"Block with name {request.name} already exists")
1049
1049
  block = Block(**vars(request))
@@ -1513,11 +1513,12 @@ class SyncServer(Server):
1513
1513
 
1514
1514
  # TODO: delete data from agent passage stores (?)
1515
1515
 
1516
- def create_job(self, user_id: str) -> Job:
1516
+ def create_job(self, user_id: str, metadata: Optional[Dict] = None) -> Job:
1517
1517
  """Create a new job"""
1518
1518
  job = Job(
1519
1519
  user_id=user_id,
1520
1520
  status=JobStatus.created,
1521
+ metadata_=metadata,
1521
1522
  )
1522
1523
  self.ms.create_job(job)
1523
1524
  return job
@@ -1627,8 +1628,18 @@ class SyncServer(Server):
1627
1628
  source_id: Optional[str] = None,
1628
1629
  source_name: Optional[str] = None,
1629
1630
  ) -> Source:
1630
- # TODO: remove all passages coresponding to source from agent's archival memory
1631
- raise NotImplementedError
1631
+ if not source_id:
1632
+ assert source_name is not None, "source_name must be provided if source_id is not"
1633
+ source = self.ms.get_source(source_name=source_name, user_id=user_id)
1634
+ source_id = source.id
1635
+ else:
1636
+ source = self.ms.get_source(source_id=source_id)
1637
+
1638
+ # delete all Passage objects with source_id==source_id from agent's archival memory
1639
+ agent = self._get_or_load_agent(agent_id=agent_id)
1640
+ archival_memory = agent.persistence_manager.archival_memory
1641
+ archival_memory.storage.delete({"source_id": source_id})
1642
+ return source
1632
1643
 
1633
1644
  def list_attached_sources(self, agent_id: str) -> List[Source]:
1634
1645
  # list all attached sources to an agent
@@ -1963,18 +1974,18 @@ class SyncServer(Server):
1963
1974
 
1964
1975
  return self.get_default_user()
1965
1976
  ## NOTE: same code as local client to get the default user
1966
- #config = LettaConfig.load()
1967
- #user_id = config.anon_clientid
1968
- #user = self.get_user(user_id)
1977
+ # config = LettaConfig.load()
1978
+ # user_id = config.anon_clientid
1979
+ # user = self.get_user(user_id)
1969
1980
 
1970
- #if not user:
1981
+ # if not user:
1971
1982
  # user = self.create_user(UserCreate())
1972
1983
 
1973
1984
  # # # update config
1974
1985
  # config.anon_clientid = str(user.id)
1975
1986
  # config.save()
1976
1987
 
1977
- #return user
1988
+ # return user
1978
1989
 
1979
1990
  def list_models(self) -> List[LLMConfig]:
1980
1991
  """List available models"""
letta/settings.py CHANGED
@@ -1,6 +1,6 @@
1
+ import os
1
2
  from pathlib import Path
2
3
  from typing import Optional
3
- import os
4
4
 
5
5
  from pydantic import Field
6
6
  from pydantic_settings import BaseSettings, SettingsConfigDict
@@ -64,11 +64,12 @@ class Settings(BaseSettings):
64
64
  if self.llm_model:
65
65
  try:
66
66
  return LLMConfig.default_config(self.llm_model)
67
- except ValueError as e:
67
+ except ValueError:
68
68
  pass
69
69
 
70
70
  # try to read from config file (last resort)
71
71
  from letta.config import LettaConfig
72
+
72
73
  if LettaConfig.exists():
73
74
  config = LettaConfig.load()
74
75
  llm_config = LLMConfig(
@@ -79,12 +80,12 @@ class Settings(BaseSettings):
79
80
  context_window=config.default_llm_config.context_window,
80
81
  )
81
82
  return llm_config
82
-
83
+
83
84
  # check OpenAI API key
84
- if os.getenv("OPENAI_API_KEY"):
85
+ if os.getenv("OPENAI_API_KEY"):
85
86
  return LLMConfig.default_config(self.llm_model if self.llm_model else "gpt-4")
86
87
 
87
- return LLMConfig.default_config("letta")
88
+ return LLMConfig.default_config("letta")
88
89
 
89
90
  @property
90
91
  def embedding_config(self):
@@ -118,6 +119,7 @@ class Settings(BaseSettings):
118
119
 
119
120
  # try to read from config file (last resort)
120
121
  from letta.config import LettaConfig
122
+
121
123
  if LettaConfig.exists():
122
124
  config = LettaConfig.load()
123
125
  return EmbeddingConfig(
@@ -127,10 +129,10 @@ class Settings(BaseSettings):
127
129
  embedding_dim=config.default_embedding_config.embedding_dim,
128
130
  embedding_chunk_size=config.default_embedding_config.embedding_chunk_size,
129
131
  )
130
-
132
+
131
133
  if os.getenv("OPENAI_API_KEY"):
132
134
  return EmbeddingConfig.default_config(self.embedding_model if self.embedding_model else "text-embedding-ada-002")
133
-
135
+
134
136
  return EmbeddingConfig.default_config("letta")
135
137
 
136
138
  @property
@@ -161,5 +163,5 @@ class TestSettings(Settings):
161
163
 
162
164
 
163
165
  # singleton
164
- settings = Settings(_env_parse_none_str='None')
166
+ settings = Settings(_env_parse_none_str="None")
165
167
  test_settings = TestSettings()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: letta-nightly
3
- Version: 0.1.7.dev20240925104133
3
+ Version: 0.1.7.dev20240926104108
4
4
  Summary: Create LLM agents with long-term memory and custom tools
5
5
  License: Apache License
6
6
  Author: Letta Team
@@ -73,17 +73,17 @@ Description-Content-Type: text/markdown
73
73
 
74
74
  # Letta (previously MemGPT)
75
75
  [![Discord](https://img.shields.io/discord/1161736243340640419?label=Discord&logo=discord&logoColor=5865F2&style=flat-square&color=5865F2)](https://discord.gg/letta)
76
- [![Twitter Follow](https://img.shields.io/badge/follow-%40Letta-1DA1F2?style=flat-square&logo=x&logoColor=white)](https://twitter.com/Letta_AI)
76
+ [![Twitter Follow](https://img.shields.io/badge/follow-%40Letta_AI-1DA1F2?style=flat-square&logo=x&logoColor=white)](https://twitter.com/Letta_AI)
77
77
  [![arxiv 2310.08560](https://img.shields.io/badge/arXiv-2310.08560-B31B1B?logo=arxiv&style=flat-square)](https://arxiv.org/abs/2310.08560)
78
78
 
79
- > [!NOTE]
79
+ > [!NOTE]
80
80
  > **Looking for MemGPT?**
81
- >
81
+ >
82
82
  > The MemGPT package and Docker image have been renamed to `letta` to clarify the distinction between **MemGPT agents** and the API server / runtime that runs LLM agents as *services*.
83
- >
83
+ >
84
84
  > You use the **Letta framework** to create **MemGPT agents**. Read more about the relationship between MemGPT and Letta [here](https://www.letta.com/blog/memgpt-and-letta).
85
85
 
86
- See [documentation](https://docs.letta.com/introduction) for setup and usage.
86
+ See [documentation](https://docs.letta.com/introduction) for setup and usage.
87
87
 
88
88
  ## How to Get Involved
89
89
  * **Contribute to the Project**: Interested in contributing? Start by reading our [Contribution Guidelines](https://github.com/cpacker/MemGPT/tree/main/CONTRIBUTING.md).
@@ -9,12 +9,12 @@ letta/agent_store/qdrant.py,sha256=qIEJhXJb6GzcT4wp8iV5Ox5W1CFMvcPViTI4HLSh59E,7
9
9
  letta/agent_store/storage.py,sha256=QWrPdIEJCnsPg1xnPrG1xbOXmbjpz37ZNhvuH52M7A8,6642
10
10
  letta/benchmark/benchmark.py,sha256=JjCQE7piz2VHh3QCGwJX-9DelaSlUYV4Qw01hQuVolU,3633
11
11
  letta/benchmark/constants.py,sha256=aXc5gdpMGJT327VuxsT5FngbCK2J41PQYeICBO7g_RE,536
12
- letta/cli/cli.py,sha256=nEw-kOlBucy2d1b6WZPP_-if36_d13GM9y-gl8lj-wk,31115
12
+ letta/cli/cli.py,sha256=p_L2Ye7SiSMGbEaHbXHB4PI9C9uEZ2qZgAl022j9TLE,31214
13
13
  letta/cli/cli_config.py,sha256=MSxqbS5F9jUSjCgLkd-6T5Hj3ca_l-AoSwXc6dgy13E,57093
14
14
  letta/cli/cli_load.py,sha256=e3U7vGzoZHQQAxyOw2VNUwxOJucyzK_r_9TrCyLNh1A,6800
15
15
  letta/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  letta/client/admin.py,sha256=itdH1dGL143Je5tkZl8dQ1PavjepClar3QasxpbX1cI,7397
17
- letta/client/client.py,sha256=IaqQvsSP1BrCR2w2HBNFWLhualzQIK95jnoM7xIbJ3U,80135
17
+ letta/client/client.py,sha256=RQz0hBzuR1wZfZ8ccSnQuPW5J8MuMUZ2ywAOYICGg1g,80579
18
18
  letta/client/streaming.py,sha256=bfWlUu7z7EoPfKxBqIarYxGKyrL7Pj79BlliToqcCgI,4592
19
19
  letta/client/utils.py,sha256=NMFts6bFsHTV0yW3BRRo2HSqGr6Gr3tj1kNtkUCgMCA,2262
20
20
  letta/config.py,sha256=2c400BOlddM_fs4Ehiar7auNA2hBx_zbbLvasdM_2vU,19317
@@ -40,7 +40,7 @@ letta/llm_api/anthropic.py,sha256=nxMuLW7kIw6QLZW77M_fH7HSPV-ckFF50DVqvLRRFqg,13
40
40
  letta/llm_api/azure_openai.py,sha256=NjAVifNpjbTSGa9dZ4lS12sjwRWZBsmB1wlIGD4m4aI,6900
41
41
  letta/llm_api/cohere.py,sha256=vDRd-SUGp1t_JUIdwC3RkIhwMl0OY7n-tAU9uPORYkY,14826
42
42
  letta/llm_api/google_ai.py,sha256=Ksf4vlYoWRe5JtiPOqxaArDnjUbAS8fxX_zwgt-2buQ,19100
43
- letta/llm_api/llm_api_tools.py,sha256=ANhRG6Hhz39rCqNpjRMHMb1rALaTwkHeeooMjk2m7Cg,20528
43
+ letta/llm_api/llm_api_tools.py,sha256=hoWYAG11YNN5YzOuemePKX2gPURCROvi0ra4XAMMsO8,20529
44
44
  letta/llm_api/openai.py,sha256=iJVKnfT0vQ447wkhv6_eZCI_K0gauV86IPuJ0BnPAuc,21064
45
45
  letta/local_llm/README.md,sha256=hFJyw5B0TU2jrh9nb0zGZMgdH-Ei1dSRfhvPQG_NSoU,168
46
46
  letta/local_llm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -114,12 +114,12 @@ letta/schemas/block.py,sha256=1QuHtgEM3SXO0bI2eF_tZ6EVP0LOB39L08G6rLLyfiE,4205
114
114
  letta/schemas/document.py,sha256=JpvU0YkvOVLvHaDNcg-ihFzpeHC2zqsWBgyJ6zHnfNw,745
115
115
  letta/schemas/embedding_config.py,sha256=KhEOStOD8VbHFyLI9pkQVbTG1Av2g-Ql0yf9M868LME,2570
116
116
  letta/schemas/enums.py,sha256=WfRYpLh_pD-VyhEnp3Y6pPfx063zq2o4jky6PulqO8w,629
117
- letta/schemas/job.py,sha256=wiBqd-WcSLAxvwidTLuRchhABibt_B2tEAkJCj8Te-I,1545
117
+ letta/schemas/job.py,sha256=bYDrjbJm2B4LUTSkLUdQR_HDhL2E23g0EHf7E23ezYU,1547
118
118
  letta/schemas/letta_base.py,sha256=4QXFgyjCHqIagi8B6_4nmqb9eoJ52Y6aCxBxQpGX48M,2832
119
119
  letta/schemas/letta_message.py,sha256=Slgxa59qZfdvqXuCVHOt03u-7JL456ZY-WLaK5UYYKU,6234
120
120
  letta/schemas/letta_request.py,sha256=9Ad80UvmxOn3eJH9SmVjgAKsp3qXZ8HALWTjZt4t4Uw,958
121
121
  letta/schemas/letta_response.py,sha256=YifipiDu7ESA4UavjVaMcJw95ViNMTHr0SG5OG1uzPY,1154
122
- letta/schemas/llm_config.py,sha256=1qD09UAT7U2Fta_-Kv8vRORnF5DIcOapS2GgJX6Ttco,2184
122
+ letta/schemas/llm_config.py,sha256=-tIKGF29NZv2cHJPuaYuNBY7Jt7qFG9U2fH-PxdctZM,2183
123
123
  letta/schemas/memory.py,sha256=mDJbe9mzTw0HSn6tiouC3z32r-8Fc_EaeqxDy_hXf0U,9327
124
124
  letta/schemas/message.py,sha256=aMnmAC4uyGFaOKibQppclIRAbCJUBKQKUJl2TWAv-ik,32031
125
125
  letta/schemas/openai/chat_completion_request.py,sha256=Fa7xnSnG7WUQounJhnDu0fTSxoR6xOAh2bODuqmfypI,3345
@@ -140,7 +140,7 @@ letta/server/rest_api/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMp
140
140
  letta/server/rest_api/admin/agents.py,sha256=cFNDU4Z8wGpcWXuo5aBgX6CcxLzPpTFYnTIaiF-3qvw,564
141
141
  letta/server/rest_api/admin/tools.py,sha256=gZfngjH27PGT1pDw2PUZpenbdJG21xK2IIO-YSitn3o,3183
142
142
  letta/server/rest_api/admin/users.py,sha256=IIec8G2yxVZtSo8dYrQPktVj8XIsZMptxigxmgULKO8,3480
143
- letta/server/rest_api/app.py,sha256=MGKaOjRd5n_WPrxUn0Md7RfVk2WTCxLvMWPuGabZO4A,6770
143
+ letta/server/rest_api/app.py,sha256=wnbXqm8yZWSzgJnYnZOJEp5JX9lRphxlkSX6K5ZbApc,6742
144
144
  letta/server/rest_api/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
145
  letta/server/rest_api/auth/index.py,sha256=fQBGyVylGSRfEMLQ17cZzrHd5Y1xiVylvPqH5Rl-lXQ,1378
146
146
  letta/server/rest_api/auth_token.py,sha256=725EFEIiNj4dh70hrSd94UysmFD8vcJLrTRfNHkzxDo,774
@@ -156,15 +156,15 @@ letta/server/rest_api/routers/openai/chat_completions/chat_completions.py,sha256
156
156
  letta/server/rest_api/routers/v1/__init__.py,sha256=xzNnC4_aIbWJNhpoh0o3hGjLpS8X2gFtxsNS5IGCWPI,571
157
157
  letta/server/rest_api/routers/v1/agents.py,sha256=AsLvhZjXBRd7_hbxrvKvccKQtkcjkHpZmEqm6xe5w8U,19462
158
158
  letta/server/rest_api/routers/v1/blocks.py,sha256=xY-9k2e2dTRsU9Zh-kT164Z977O0Ed_YYBjLaWKbDpE,2293
159
- letta/server/rest_api/routers/v1/jobs.py,sha256=2LYy8gGIL9IEVmNippCVg6NLiMzQvsSvffA-_HvvZ40,1091
159
+ letta/server/rest_api/routers/v1/jobs.py,sha256=YHEKALAkSCvF_gzIhvsTkqaLdIhFBYrTNmwCtnzohhM,1574
160
160
  letta/server/rest_api/routers/v1/llms.py,sha256=1O1YiSNeJBnSZY1dFiH58Gk3dodR2GrsgAkG-hR9p9c,797
161
161
  letta/server/rest_api/routers/v1/organizations.py,sha256=i3S9E1hu2Zj9g0pRv6wnQhz1VJ_RMIHCrGzgwY-Wj3Y,1945
162
- letta/server/rest_api/routers/v1/sources.py,sha256=tpSTg_VP-o6oHeAebEm8KOFE_doQu-Jqi9CRCIO2cdg,6263
162
+ letta/server/rest_api/routers/v1/sources.py,sha256=H2cfoiHcWxmHUhiSJ5s2Ty0I3W7Ex7DfdEkS9d7Ejos,6272
163
163
  letta/server/rest_api/routers/v1/tools.py,sha256=nKiPO4S9NwxZEQ6wSPBROiNdQtvoxqlEDjk3gBe_Bdk,2729
164
164
  letta/server/rest_api/routers/v1/users.py,sha256=Y2rDvHOG1B5FLSOjutY3R22vt48IngbZ-9h8CohG5rc,3378
165
165
  letta/server/rest_api/static_files.py,sha256=NG8sN4Z5EJ8JVQdj19tkFa9iQ1kBPTab9f_CUxd_u4Q,3143
166
166
  letta/server/rest_api/utils.py,sha256=Fc2ZGKzLaBa2sEtSTVjJ8D5M0xIwsWC0CVAOIJaD3rY,2176
167
- letta/server/server.py,sha256=OdJ4cp5btb5r2xSrcLVObZyroUyDLk4MI3X7T57LsIE,83737
167
+ letta/server/server.py,sha256=ZosX32jjRuwohTFLGWqD8iystPtAWTHSSNxDIPyyKhE,84301
168
168
  letta/server/startup.sh,sha256=jeGV7B_PS0hS-tT6o6GpACrUbV9WV1NI2L9aLoUDDtc,311
169
169
  letta/server/static_files/assets/index-0cbf7ad5.js,sha256=MCP81_BE6xKu6Yp2fwiumwsojg-6inAI-tKVQHoRwtE,1814412
170
170
  letta/server/static_files/assets/index-156816da.css,sha256=FWgW2kKzk1X8_t6e4qtOIAUvZ59YPdB-PMNqvPRCup4,54271
@@ -178,12 +178,12 @@ letta/server/ws_api/example_client.py,sha256=95AA5UFgTlNJ0FUQkLxli8dKNx48MNm3eWG
178
178
  letta/server/ws_api/interface.py,sha256=TWl9vkcMCnLsUtgsuENZ-ku2oMDA-OUTzLh_yNRoMa4,4120
179
179
  letta/server/ws_api/protocol.py,sha256=M_-gM5iuDBwa1cuN2IGNCG5GxMJwU2d3XW93XALv9s8,1821
180
180
  letta/server/ws_api/server.py,sha256=C2Kv48PCwl46DQFb0ZP30s86KJLQ6dZk2AhWQEZn9pY,6004
181
- letta/settings.py,sha256=qpR141lYqj-NDnOEgbLe4kBbx3qxYqTIOTEFD-rW_OE,6534
181
+ letta/settings.py,sha256=1S0CN3fCGdZIdhIWPNJO5k2vmosrNRux4arnCj7dYQg,6502
182
182
  letta/streaming_interface.py,sha256=LPY1NmXtptcjdHrfVOOKL4-v3AyUD8SIyQMt1Dypd1A,15532
183
183
  letta/system.py,sha256=buKYPqG5n2x41hVmWpu6JUpyd7vTWED9Km2_M7dLrvk,6960
184
184
  letta/utils.py,sha256=LyqSRz_FejtsdelKigpV86kT8GRVrLwkXIOVQLHPm7Q,30661
185
- letta_nightly-0.1.7.dev20240925104133.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
186
- letta_nightly-0.1.7.dev20240925104133.dist-info/METADATA,sha256=WTYj9bVD8b4PN-l-MTJQFcbzsUYseC5hvXBR6-XjvG8,5501
187
- letta_nightly-0.1.7.dev20240925104133.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
188
- letta_nightly-0.1.7.dev20240925104133.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
189
- letta_nightly-0.1.7.dev20240925104133.dist-info/RECORD,,
185
+ letta_nightly-0.1.7.dev20240926104108.dist-info/LICENSE,sha256=mExtuZ_GYJgDEI38GWdiEYZizZS4KkVt2SF1g_GPNhI,10759
186
+ letta_nightly-0.1.7.dev20240926104108.dist-info/METADATA,sha256=pMXconh3DqWEqBF9FzItrqQXnpve5hlVs8bCMhR1F0w,5499
187
+ letta_nightly-0.1.7.dev20240926104108.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
188
+ letta_nightly-0.1.7.dev20240926104108.dist-info/entry_points.txt,sha256=2zdiyGNEZGV5oYBuS-y2nAAgjDgcC9yM_mHJBFSRt5U,40
189
+ letta_nightly-0.1.7.dev20240926104108.dist-info/RECORD,,