|
8 | 8 | from database.agent_db import create_agent, query_all_enabled_tool_instances, \ |
9 | 9 | query_or_create_main_agent_id, query_sub_agents, search_blank_sub_agent_by_main_agent_id, \ |
10 | 10 | search_tools_for_sub_agent, search_agent_info_by_agent_id, update_agent, delete_agent_by_id, query_all_tools, \ |
11 | | - create_or_update_tool_by_tool_info, check_tool_is_available |
| 11 | + create_or_update_tool_by_tool_info, check_tool_is_available, query_all_agent_info_by_tenant_id |
12 | 12 |
|
13 | 13 | from utils.auth_utils import get_current_user_id |
14 | 14 | from typing import Optional |
@@ -231,8 +231,8 @@ def import_agent_impl(parent_agent_id: int, agent_info: ExportAndImportAgentInfo |
231 | 231 | raise ValueError(f"Invalid model name: {agent_info.model_name}. model name must be 'main_model' or 'sub_model'.") |
232 | 232 | if agent_info.max_steps <= 0 or agent_info.max_steps > 20: |
233 | 233 | raise ValueError(f"Invalid max steps: {agent_info.max_steps}. max steps must be greater than 0 and less than 20.") |
234 | | - if agent_info.name == "main": |
235 | | - raise ValueError(f"Invalid agent name: {agent_info.name}. agent name cannot be 'main'.") |
| 234 | + if not agent_info.name.isidentifier(): |
| 235 | + raise ValueError(f"Invalid agent name: {agent_info.name}. agent name must be a valid python variable name.") |
236 | 236 | # create a new agent |
237 | 237 | user_id, tenant_id = get_current_user_id() |
238 | 238 | new_agent = create_agent(agent_info={"name": agent_info.name, |
@@ -307,3 +307,38 @@ def import_default_agents_to_pg(): |
307 | 307 | except Exception as e: |
308 | 308 | logger.error(f"Failed to import default agents: {str(e)}") |
309 | 309 | raise ValueError(f"Failed to import default agents: {str(e)}") |
| 310 | + |
| 311 | +def list_all_agent_info_impl(tenant_id: str, user_id: str) -> list[dict]: |
| 312 | + """ |
| 313 | + list all agent info |
| 314 | +
|
| 315 | + Args: |
| 316 | + tenant_id (str): tenant id |
| 317 | + user_id (str): user id |
| 318 | +
|
| 319 | + Raises: |
| 320 | + ValueError: failed to query all agent info |
| 321 | +
|
| 322 | + Returns: |
| 323 | + list: list of agent info |
| 324 | + """ |
| 325 | + try: |
| 326 | + agent_list = query_all_agent_info_by_tenant_id(tenant_id=tenant_id) |
| 327 | + |
| 328 | + simple_agent_list = [] |
| 329 | + for agent in agent_list: |
| 330 | + # check agent is available |
| 331 | + tool_info = search_tools_for_sub_agent(agent_id=agent["agent_id"], tenant_id=tenant_id, user_id=None) |
| 332 | + tool_id_list = [tool["tool_id"] for tool in tool_info] |
| 333 | + is_available = all(check_tool_is_available(tool_id_list)) |
| 334 | + |
| 335 | + simple_agent_list.append({ |
| 336 | + "agent_id": agent["agent_id"], |
| 337 | + "name": agent["name"], |
| 338 | + "description": agent["description"], |
| 339 | + "is_available": is_available |
| 340 | + }) |
| 341 | + return simple_agent_list |
| 342 | + except Exception as e: |
| 343 | + logger.error(f"Failed to query all agent info: {str(e)}") |
| 344 | + raise ValueError(f"Failed to query all agent info: {str(e)}") |
0 commit comments