1414
1515from deepset_mcp .api .client import AsyncDeepsetClient
1616from deepset_mcp .config import DEFAULT_CLIENT_HEADER , DOCS_SEARCH_TOOL_NAME
17+ from deepset_mcp .mcp .tool_models import DeepsetDocsConfig , MemoryType , ToolConfig , WorkspaceMode
18+ from deepset_mcp .mcp .tool_registry import TOOL_REGISTRY
1719from deepset_mcp .tokonomics import (
1820 ObjectStore ,
1921 RichExplorer ,
2022 explorable ,
2123 explorable_and_referenceable ,
2224 referenceable ,
2325)
24- from deepset_mcp .tool_models import DeepsetDocsConfig , MemoryType , ToolConfig , WorkspaceMode
25- from deepset_mcp .tool_registry import TOOL_REGISTRY
2626
2727
2828def apply_custom_args (base_func : Callable [..., Any ], config : ToolConfig ) -> Callable [..., Any ]:
@@ -78,41 +78,35 @@ def remove_params_from_docstring(docstring: str | None, params_to_remove: set[st
7878
7979
8080def apply_workspace (
81- base_func : Callable [..., Any ], config : ToolConfig , workspace_mode : WorkspaceMode , workspace : str | None = None
81+ base_func : Callable [..., Any ], config : ToolConfig , workspace : str | None = None
8282) -> Callable [..., Any ]:
8383 """
84- Applies a deepset workspace to the function depending on the workspace mode and the ToolConfig.
84+ Applies a deepset workspace to the function depending on the ToolConfig.
8585
8686 Removes the workspace argument from the function's signature and docstring if applied.
8787
8888 :param base_func: The function to apply workspace to.
8989 :param config: The ToolConfig for the function.
90- :param workspace_mode: The WorkspaceMode for the function.
91- :param workspace: The workspace to use for static mode.
90+ :param workspace: The workspace to use.
9291 :returns: Function with workspace handling applied and updated signature/docstring.
9392 :raises ValueError: If workspace is required but not available.
9493 """
95- if not config .needs_workspace :
94+ if not config .needs_workspace or not workspace :
9695 return base_func
9796
98- if workspace_mode == WorkspaceMode .STATIC :
99-
100- @functools .wraps (base_func )
101- async def workspace_wrapper (* args : Any , ** kwargs : Any ) -> Any :
102- return await base_func (* args , workspace = workspace , ** kwargs )
97+ @functools .wraps (base_func )
98+ async def workspace_wrapper (* args : Any , ** kwargs : Any ) -> Any :
99+ return await base_func (* args , workspace = workspace , ** kwargs )
103100
104- # Remove workspace from signature
105- original_sig = inspect .signature (base_func )
106- new_params = [p for name , p in original_sig .parameters .items () if name != "workspace" ]
107- workspace_wrapper .__signature__ = original_sig .replace (parameters = new_params ) # type: ignore
101+ # Remove workspace from signature
102+ original_sig = inspect .signature (base_func )
103+ new_params = [p for name , p in original_sig .parameters .items () if name != "workspace" ]
104+ workspace_wrapper .__signature__ = original_sig .replace (parameters = new_params ) # type: ignore
108105
109- # Remove workspace from docstring
110- workspace_wrapper .__doc__ = remove_params_from_docstring (base_func .__doc__ , {"workspace" })
106+ # Remove workspace from docstring
107+ workspace_wrapper .__doc__ = remove_params_from_docstring (base_func .__doc__ , {"workspace" })
111108
112- return workspace_wrapper
113- else :
114- # For dynamic mode, workspace is passed as parameter
115- return base_func
109+ return workspace_wrapper
116110
117111
118112def apply_memory (
@@ -226,7 +220,6 @@ async def client_wrapper_without_context(*args: Any, **kwargs: Any) -> Any:
226220def build_tool (
227221 base_func : Callable [..., Any ],
228222 config : ToolConfig ,
229- workspace_mode : WorkspaceMode ,
230223 api_key : str | None = None ,
231224 workspace : str | None = None ,
232225 use_request_context : bool = True ,
@@ -240,7 +233,6 @@ def build_tool(
240233
241234 :param base_func: The base tool function.
242235 :param config: Tool configuration specifying dependencies and custom arguments.
243- :param workspace_mode: How the workspace should be handled.
244236 :param api_key: The deepset API key to use.
245237 :param workspace: The workspace to use when using a static workspace.
246238 :param use_request_context: Whether to collect the API key from the request context.
@@ -257,7 +249,7 @@ def build_tool(
257249 enhanced_func = apply_memory (enhanced_func , config , object_store )
258250
259251 # Apply workspace handling
260- enhanced_func = apply_workspace (enhanced_func , config , workspace_mode , workspace )
252+ enhanced_func = apply_workspace (base_func = enhanced_func , config = config , workspace = workspace )
261253
262254 # Apply client injection (adds ctx parameter if needed)
263255 enhanced_func = apply_client (
@@ -360,7 +352,6 @@ def register_tools(
360352 enhanced_tool = build_tool (
361353 base_func = base_func ,
362354 config = config ,
363- workspace_mode = workspace_mode ,
364355 workspace = workspace ,
365356 use_request_context = get_api_key_from_authorization_header ,
366357 base_url = base_url ,
0 commit comments