Skip to content

Commit 88d82ef

Browse files
authored
fixed info endpoints (#9)
1 parent 2569933 commit 88d82ef

File tree

2 files changed

+24
-25
lines changed

2 files changed

+24
-25
lines changed

src/adapter/routes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def _get_tool_categories(self) -> dict[str, list[dict[str, Any]]]:
9898
categories: dict[str, list[dict[str, Any]]] = {}
9999

100100
for tool_name, tool in self.tools.items():
101-
parts = tool_name.split("/", 1)
101+
parts = tool_name.split("_", 1)
102102
category = parts[0] if len(parts) > 1 else "uncategorized"
103103
short_name = parts[1] if len(parts) > 1 else tool_name
104104

@@ -151,9 +151,9 @@ async def get_category_tools(category: str):
151151
],
152152
}
153153

154-
@app.get(f"{self.route_prefix}/{{category}}/{{tool_name:path}}", tags=["Info"])
154+
@app.get(f"{self.route_prefix}/{{category}}/{{tool_name}}", tags=["Info"])
155155
async def get_tool_info(category: str, tool_name: str):
156-
full_name = f"{category}/{tool_name}"
156+
full_name = f"{category}_{tool_name}"
157157
if full_name not in self.tools:
158158
raise HTTPException(
159159
status_code=404, detail=f"Tool '{full_name}' not found"

tests/adapter/test_routes.py

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def _create_route_generator(self, tools: dict) -> RouteGenerator:
2222

2323
def test_single_category_single_tool(self):
2424
tools = {
25-
"calculator/add": self._create_mock_tool("calculator/add"),
25+
"calculator_add": self._create_mock_tool("calculator_add"),
2626
}
2727
generator = self._create_route_generator(tools)
2828

@@ -31,13 +31,13 @@ def test_single_category_single_tool(self):
3131
assert "calculator" in categories
3232
assert len(categories["calculator"]) == 1
3333
assert categories["calculator"][0]["name"] == "add"
34-
assert categories["calculator"][0]["full_name"] == "calculator/add"
34+
assert categories["calculator"][0]["full_name"] == "calculator_add"
3535

3636
def test_single_category_multiple_tools(self):
3737
tools = {
38-
"calculator/add": self._create_mock_tool("calculator/add"),
39-
"calculator/subtract": self._create_mock_tool("calculator/subtract"),
40-
"calculator/multiply": self._create_mock_tool("calculator/multiply"),
38+
"calculator_add": self._create_mock_tool("calculator_add"),
39+
"calculator_subtract": self._create_mock_tool("calculator_subtract"),
40+
"calculator_multiply": self._create_mock_tool("calculator_multiply"),
4141
}
4242
generator = self._create_route_generator(tools)
4343

@@ -48,9 +48,9 @@ def test_single_category_multiple_tools(self):
4848

4949
def test_multiple_categories(self):
5050
tools = {
51-
"calculator/add": self._create_mock_tool("calculator/add"),
52-
"filesystem/read": self._create_mock_tool("filesystem/read"),
53-
"shell/execute": self._create_mock_tool("shell/execute"),
51+
"calculator_add": self._create_mock_tool("calculator_add"),
52+
"filesystem_read": self._create_mock_tool("filesystem_read"),
53+
"shell_execute": self._create_mock_tool("shell_execute"),
5454
}
5555
generator = self._create_route_generator(tools)
5656

@@ -66,20 +66,20 @@ def test_multiple_categories(self):
6666

6767
def test_uncategorized_tool(self):
6868
tools = {
69-
"simple_tool": self._create_mock_tool("simple_tool"),
69+
"simpletool": self._create_mock_tool("simpletool"),
7070
}
7171
generator = self._create_route_generator(tools)
7272

7373
categories = generator._get_tool_categories()
7474

7575
assert "uncategorized" in categories
7676
assert len(categories["uncategorized"]) == 1
77-
assert categories["uncategorized"][0]["name"] == "simple_tool"
77+
assert categories["uncategorized"][0]["name"] == "simpletool"
7878

7979
def test_mixed_categorized_and_uncategorized(self):
8080
tools = {
81-
"calculator/add": self._create_mock_tool("calculator/add"),
82-
"simple_tool": self._create_mock_tool("simple_tool"),
81+
"calculator_add": self._create_mock_tool("calculator_add"),
82+
"simpletool": self._create_mock_tool("simpletool"),
8383
}
8484
generator = self._create_route_generator(tools)
8585

@@ -91,17 +91,16 @@ def test_mixed_categorized_and_uncategorized(self):
9191

9292
def test_nested_category_path(self):
9393
tools = {
94-
"data/csv/read": self._create_mock_tool("data/csv/read"),
94+
"data_csv_read": self._create_mock_tool("data_csv_read"),
9595
}
9696
generator = self._create_route_generator(tools)
9797

9898
categories = generator._get_tool_categories()
9999

100100
assert "data" in categories
101101
assert len(categories["data"]) == 1
102-
# The sub_tool should be "csv/read" (everything after first /)
103-
assert categories["data"][0]["name"] == "csv/read"
104-
assert categories["data"][0]["full_name"] == "data/csv/read"
102+
assert categories["data"][0]["name"] == "csv_read"
103+
assert categories["data"][0]["full_name"] == "data_csv_read"
105104

106105
def test_empty_tools(self):
107106
tools = {}
@@ -113,31 +112,31 @@ def test_empty_tools(self):
113112

114113
def test_tool_endpoint_path(self):
115114
tools = {
116-
"calculator/add": self._create_mock_tool("calculator/add"),
115+
"calculator_add": self._create_mock_tool("calculator_add"),
117116
}
118117
generator = self._create_route_generator(tools)
119118

120119
categories = generator._get_tool_categories()
121120

122-
expected_endpoint = "/tools/calculator/add"
121+
expected_endpoint = "/tools/calculator_add"
123122
assert categories["calculator"][0]["endpoint"] == expected_endpoint
124123

125124
def test_custom_route_prefix(self):
126125
mock_client = MagicMock()
127126
generator = RouteGenerator(client=mock_client, route_prefix="/api/v1/tools")
128127
generator.tools = {
129-
"calculator/add": self._create_mock_tool("calculator/add"),
128+
"calculator_add": self._create_mock_tool("calculator_add"),
130129
}
131130

132131
categories = generator._get_tool_categories()
133132

134-
expected_endpoint = "/api/v1/tools/calculator/add"
133+
expected_endpoint = "/api/v1/tools/calculator_add"
135134
assert categories["calculator"][0]["endpoint"] == expected_endpoint
136135

137136
def test_tool_description_preserved(self):
138137
tools = {
139-
"calculator/add": self._create_mock_tool(
140-
"calculator/add", description="Add two numbers together"
138+
"calculator_add": self._create_mock_tool(
139+
"calculator_add", description="Add two numbers together"
141140
),
142141
}
143142
generator = self._create_route_generator(tools)

0 commit comments

Comments
 (0)