From cabb04c005c4c1dbb4badd98501c4a8d8098cb9f Mon Sep 17 00:00:00 2001 From: cthomas Date: Tue, 21 Jan 2025 18:03:04 -0800 Subject: [PATCH] fix: rename memory/block routes to core_memory/blocks (#711) --- letta/client/client.py | 18 +++++++++--------- letta/server/rest_api/routers/v1/agents.py | 14 +++++++------- tests/test_client.py | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/letta/client/client.py b/letta/client/client.py index 711f88e3..a26d220c 100644 --- a/letta/client/client.py +++ b/letta/client/client.py @@ -768,7 +768,7 @@ class RESTClient(AbstractClient): Returns: memory (Memory): In-context memory of the agent """ - response = requests.get(f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory", headers=self.headers) + response = requests.get(f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory", headers=self.headers) if response.status_code != 200: raise ValueError(f"Failed to get in-context memory: {response.text}") return Memory(**response.json()) @@ -789,7 +789,7 @@ class RESTClient(AbstractClient): """ memory_update_dict = {section: value} response = requests.patch( - f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory", json=memory_update_dict, headers=self.headers + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory", json=memory_update_dict, headers=self.headers ) if response.status_code != 200: raise ValueError(f"Failed to update in-context memory: {response.text}") @@ -1846,7 +1846,7 @@ class RESTClient(AbstractClient): memory (Memory): The updated memory """ response = requests.post( - f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory/block", + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory/block", headers=self.headers, json=create_block.model_dump(), ) @@ -1887,14 +1887,14 @@ class RESTClient(AbstractClient): memory (Memory): The updated memory """ response = requests.delete( - f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory/block/{block_label}", + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory/blocks/{block_label}", headers=self.headers, ) if response.status_code != 200: raise ValueError(f"Failed to remove agent memory block: {response.text}") return Memory(**response.json()) - def get_agent_memory_blocks(self, agent_id: str) -> List[Block]: + def list_agent_memory_blocks(self, agent_id: str) -> List[Block]: """ Get all the blocks in the agent's core memory @@ -1904,7 +1904,7 @@ class RESTClient(AbstractClient): Returns: blocks (List[Block]): The blocks in the agent's core memory """ - response = requests.get(f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory/block", headers=self.headers) + response = requests.get(f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory/block", headers=self.headers) if response.status_code != 200: raise ValueError(f"Failed to get agent memory blocks: {response.text}") return [Block(**block) for block in response.json()] @@ -1921,7 +1921,7 @@ class RESTClient(AbstractClient): block (Block): The block corresponding to the label """ response = requests.get( - f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory/block/{label}", + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory/blocks/{label}", headers=self.headers, ) if response.status_code != 200: @@ -1954,7 +1954,7 @@ class RESTClient(AbstractClient): if limit: data["limit"] = limit response = requests.patch( - f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/memory/block/{label}", + f"{self.base_url}/{self.api_prefix}/agents/{agent_id}/core_memory/blocks/{label}", headers=self.headers, json=data, ) @@ -3517,7 +3517,7 @@ class LocalClient(AbstractClient): """ return self.server.agent_manager.detach_block_with_label(agent_id=agent_id, block_label=block_label, actor=self.user) - def get_agent_memory_blocks(self, agent_id: str) -> List[Block]: + def list_agent_memory_blocks(self, agent_id: str) -> List[Block]: """ Get all the blocks in the agent's core memory diff --git a/letta/server/rest_api/routers/v1/agents.py b/letta/server/rest_api/routers/v1/agents.py index 28a8a85e..6e1a9232 100644 --- a/letta/server/rest_api/routers/v1/agents.py +++ b/letta/server/rest_api/routers/v1/agents.py @@ -213,7 +213,7 @@ def get_agent_sources( # TODO: remove? can also get with agent blocks -@router.get("/{agent_id}/memory", response_model=Memory, operation_id="get_agent_memory") +@router.get("/{agent_id}/core_memory", response_model=Memory, operation_id="get_agent_memory") def get_agent_memory( agent_id: str, server: "SyncServer" = Depends(get_letta_server), @@ -228,7 +228,7 @@ def get_agent_memory( return server.get_agent_memory(agent_id=agent_id, actor=actor) -@router.get("/{agent_id}/memory/block/{block_label}", response_model=Block, operation_id="get_agent_memory_block") +@router.get("/{agent_id}/core_memory/blocks/{block_label}", response_model=Block, operation_id="get_agent_memory_block") def get_agent_memory_block( agent_id: str, block_label: str, @@ -246,8 +246,8 @@ def get_agent_memory_block( raise HTTPException(status_code=404, detail=str(e)) -@router.get("/{agent_id}/memory/block", response_model=List[Block], operation_id="get_agent_memory_blocks") -def get_agent_memory_blocks( +@router.get("/{agent_id}/core_memory/blocks", response_model=List[Block], operation_id="list_agent_memory_blocks") +def list_agent_memory_blocks( agent_id: str, server: "SyncServer" = Depends(get_letta_server), user_id: Optional[str] = Header(None, alias="user_id"), # Extract user_id from header, default to None if not present @@ -263,7 +263,7 @@ def get_agent_memory_blocks( raise HTTPException(status_code=404, detail=str(e)) -@router.post("/{agent_id}/memory/block", response_model=Memory, operation_id="add_agent_memory_block") +@router.post("/{agent_id}/core_memory/blocks", response_model=Memory, operation_id="add_agent_memory_block") def add_agent_memory_block( agent_id: str, create_block: CreateBlock = Body(...), @@ -286,7 +286,7 @@ def add_agent_memory_block( return agent.memory -@router.delete("/{agent_id}/memory/block/{block_label}", response_model=Memory, operation_id="remove_agent_memory_block_by_label") +@router.delete("/{agent_id}/core_memory/blocks/{block_label}", response_model=Memory, operation_id="remove_agent_memory_block_by_label") def remove_agent_memory_block( agent_id: str, # TODO should this be block_id, or the label? @@ -306,7 +306,7 @@ def remove_agent_memory_block( return agent.memory -@router.patch("/{agent_id}/memory/block/{block_label}", response_model=Block, operation_id="update_agent_memory_block_by_label") +@router.patch("/{agent_id}/core_memory/blocks/{block_label}", response_model=Block, operation_id="update_agent_memory_block_by_label") def update_agent_memory_block( agent_id: str, block_label: str, diff --git a/tests/test_client.py b/tests/test_client.py index 7ecc89e4..e1dbd864 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -663,7 +663,7 @@ def test_agent_creation(client: Union[LocalClient, RESTClient]): assert agent.id is not None # Verify the blocks are properly attached - agent_blocks = client.get_agent_memory_blocks(agent.id) + agent_blocks = client.list_agent_memory_blocks(agent.id) agent_block_ids = {block.id for block in agent_blocks} # Check that all memory blocks are present