Skip to content

Commit

Permalink
chore: remove get_tool_id_by_name (#720)
Browse files Browse the repository at this point in the history
  • Loading branch information
carenthomas authored Jan 22, 2025
1 parent 11ef124 commit 8f316bd
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 43 deletions.
12 changes: 7 additions & 5 deletions letta/client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -1455,12 +1455,14 @@ def get_tool_id(self, tool_name: str):
Returns:
id (str): ID of the tool (`None` if not found)
"""
response = requests.get(f"{self.base_url}/{self.api_prefix}/tools/name/{tool_name}", headers=self.headers)
if response.status_code == 404:
return None
elif response.status_code != 200:
response = requests.get(f"{self.base_url}/{self.api_prefix}/tools", headers=self.headers)
if response.status_code != 200:
raise ValueError(f"Failed to get tool: {response.text}")
return response.json()

tools = [tool for tool in [Tool(**tool) for tool in response.json()] if tool.name == tool_name]
if not tools:
return None
return tools[0].id

def upsert_base_tools(self) -> List[Tool]:
response = requests.post(f"{self.base_url}/{self.api_prefix}/tools/add-base-tools/", headers=self.headers)
Expand Down
17 changes: 0 additions & 17 deletions letta/server/rest_api/routers/v1/tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,23 +48,6 @@ def get_tool(
return tool


@router.get("/name/{tool_name}", response_model=str, operation_id="get_tool_id_by_name")
def get_tool_id(
tool_name: 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
):
"""
Get a tool ID by name
"""
actor = server.user_manager.get_user_or_default(user_id=user_id)
tool = server.tool_manager.get_tool_by_name(tool_name=tool_name, actor=actor)
if tool:
return tool.id
else:
raise HTTPException(status_code=404, detail=f"Tool with name {tool_name} and organization id {actor.organization_id} not found.")


@router.get("/", response_model=List[Tool], operation_id="list_tools")
def list_tools(
cursor: Optional[str] = None,
Expand Down
21 changes: 0 additions & 21 deletions tests/test_v1_routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,27 +204,6 @@ def test_get_tool_404(client, mock_sync_server, add_integers_tool):
assert response.json()["detail"] == f"Tool with id {add_integers_tool.id} not found."


def test_get_tool_id(client, mock_sync_server, add_integers_tool):
mock_sync_server.tool_manager.get_tool_by_name.return_value = add_integers_tool

response = client.get(f"/v1/tools/name/{add_integers_tool.name}", headers={"user_id": "test_user"})

assert response.status_code == 200
assert response.json() == add_integers_tool.id
mock_sync_server.tool_manager.get_tool_by_name.assert_called_once_with(
tool_name=add_integers_tool.name, actor=mock_sync_server.user_manager.get_user_or_default.return_value
)


def test_get_tool_id_404(client, mock_sync_server):
mock_sync_server.tool_manager.get_tool_by_name.return_value = None

response = client.get("/v1/tools/name/UnknownTool", headers={"user_id": "test_user"})

assert response.status_code == 404
assert "Tool with name UnknownTool" in response.json()["detail"]


def test_list_tools(client, mock_sync_server, add_integers_tool):
mock_sync_server.tool_manager.list_tools.return_value = [add_integers_tool]

Expand Down

0 comments on commit 8f316bd

Please sign in to comment.