diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/customize_agent.py b/autogpt_platform/backend/backend/api/features/chat/tools/customize_agent.py index 04984abeba..f02b8edaa5 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/customize_agent.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/customize_agent.py @@ -139,7 +139,7 @@ class CustomizeAgentTool(BaseTool): ) # Parse agent_id in format "creator/slug" - parts = params.agent_id.split("/") + parts = [p.strip() for p in params.agent_id.split("/")] if len(parts) != 2 or not parts[0] or not parts[1]: return ErrorResponse( message=( diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/edit_agent.py b/autogpt_platform/backend/backend/api/features/chat/tools/edit_agent.py index 018b94bd41..3a602da302 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/edit_agent.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/edit_agent.py @@ -3,7 +3,7 @@ import logging from typing import Any -from pydantic import BaseModel, field_validator +from pydantic import BaseModel, ConfigDict, field_validator from backend.api.features.chat.model import ChatSession @@ -30,7 +30,7 @@ logger = logging.getLogger(__name__) class EditAgentInput(BaseModel): - """Input parameters for the edit_agent tool.""" + model_config = ConfigDict(extra="allow") agent_id: str = "" changes: str = "" @@ -40,12 +40,8 @@ class EditAgentInput(BaseModel): @field_validator("agent_id", "changes", "context", mode="before") @classmethod def strip_strings(cls, v: Any) -> str: - """Strip whitespace from string fields.""" return v.strip() if isinstance(v, str) else (v if v is not None else "") - class Config: - extra = "allow" # Allow _operation_id, _task_id - class EditAgentTool(BaseTool): """Tool for editing existing agents using natural language.""" @@ -193,7 +189,7 @@ class EditAgentTool(BaseTool): return ErrorResponse( message="Failed to generate changes. The agent generation service may be unavailable or timed out. Please try again.", error="update_generation_failed", - details={"agent_id": agent_id, "changes": changes[:100]}, + details={"agent_id": params.agent_id, "changes": params.changes[:100]}, session_id=session_id, ) @@ -225,8 +221,8 @@ class EditAgentTool(BaseTool): message=user_message, error=f"update_generation_failed:{error_type}", details={ - "agent_id": agent_id, - "changes": changes[:100], + "agent_id": params.agent_id, + "changes": params.changes[:100], "service_error": error_msg, "error_type": error_type, }, diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/find_library_agent.py b/autogpt_platform/backend/backend/api/features/chat/tools/find_library_agent.py index f36a977b54..1375cd934a 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/find_library_agent.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/find_library_agent.py @@ -12,14 +12,11 @@ from .models import ToolResponseBase class FindLibraryAgentInput(BaseModel): - """Input parameters for the find_library_agent tool.""" - query: str = "" @field_validator("query", mode="before") @classmethod def strip_string(cls, v: Any) -> str: - """Strip whitespace from query.""" return v.strip() if isinstance(v, str) else (v if v is not None else "") diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/get_doc_page.py b/autogpt_platform/backend/backend/api/features/chat/tools/get_doc_page.py index 80f6150548..9eaf3b5d8d 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/get_doc_page.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/get_doc_page.py @@ -149,7 +149,7 @@ class GetDocPageTool(BaseTool): title=title, path=params.path, content=content, - doc_url=self._make_doc_url(path), + doc_url=self._make_doc_url(params.path), session_id=session_id, ) diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py b/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py index 08b132d4a6..a5c20f3d2c 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/run_block.py @@ -248,7 +248,7 @@ class RunBlockTool(BaseTool): ), session_id=session_id, setup_info=SetupInfo( - agent_id=block_id, + agent_id=params.block_id, agent_name=block.name, user_readiness=UserReadiness( has_all_credentials=False, @@ -277,7 +277,7 @@ class RunBlockTool(BaseTool): # - node_exec_id = unique per block execution synthetic_graph_id = f"copilot-session-{session.session_id}" synthetic_graph_exec_id = f"copilot-session-{session.session_id}" - synthetic_node_id = f"copilot-node-{block_id}" + synthetic_node_id = f"copilot-node-{params.block_id}" synthetic_node_exec_id = ( f"copilot-{session.session_id}-{uuid.uuid4().hex[:8]}" ) diff --git a/autogpt_platform/backend/backend/api/features/chat/tools/workspace_files.py b/autogpt_platform/backend/backend/api/features/chat/tools/workspace_files.py index 7012b68bf6..58ca328558 100644 --- a/autogpt_platform/backend/backend/api/features/chat/tools/workspace_files.py +++ b/autogpt_platform/backend/backend/api/features/chat/tools/workspace_files.py @@ -2,7 +2,7 @@ import base64 import logging -from typing import Any, Optional +from typing import Any from pydantic import BaseModel, field_validator @@ -229,7 +229,9 @@ class ListWorkspaceFilesTool(BaseTool): for f in files ] - scope_msg = "all sessions" if include_all_sessions else "current session" + scope_msg = ( + "all sessions" if params.include_all_sessions else "current session" + ) return WorkspaceFileListResponse( files=file_infos, total_count=total,