Explorar o código

refactor: load tools cache

Yeuoly hai 7 meses
pai
achega
2cb640de15

+ 18 - 0
api/controllers/files/plugin_files.py

@@ -0,0 +1,18 @@
+from flask_restful import Resource, reqparse
+
+from controllers.files import api
+
+
+class PluginFilePreviewApi(Resource):
+    def get(self, file_id: str, file_type: str):
+        parser = reqparse.RequestParser()
+
+        parser.add_argument("timestamp", type=str, required=True, location="args")
+        parser.add_argument("nonce", type=str, required=True, location="args")
+        parser.add_argument("sign", type=str, required=True, location="args")
+        parser.add_argument("as_attachment", type=bool, required=False, default=False, location="args")
+
+        args = parser.parse_args()
+
+
+api.add_resource(PluginFilePreviewApi, "/files/<path:file_id>/<path:file_type>/plugin-file-preview")

+ 10 - 9
api/core/tools/builtin_tool/provider.py

@@ -45,15 +45,9 @@ class BuiltinToolProviderController(ToolProviderController):
             ),
         )
 
-    def _get_builtin_tools(self) -> list[BuiltinTool]:
-        """
-        returns a list of tools that the provider can provide
-
-        :return: list of tools
-        """
-        if self.tools:
-            return self.tools
+        self._load_tools()
 
+    def _load_tools(self):
         provider = self.entity.identity.name
         tool_path = path.join(path.dirname(path.realpath(__file__)), "providers", provider, "tools")
         # get all the yaml files in the tool path
@@ -86,7 +80,14 @@ class BuiltinToolProviderController(ToolProviderController):
             )
 
         self.tools = tools
-        return tools
+
+    def _get_builtin_tools(self) -> list[BuiltinTool]:
+        """
+        returns a list of tools that the provider can provide
+
+        :return: list of tools
+        """
+        return self.tools
 
     def get_credentials_schema(self) -> list[ProviderConfig]:
         """

+ 0 - 1
api/core/tools/plugin_tool/tool.py

@@ -18,7 +18,6 @@ class PluginTool(Tool):
         self.tenant_id = tenant_id
         self.runtime_parameters = None
 
-    @property
     def tool_provider_type(self) -> ToolProviderType:
         return ToolProviderType.PLUGIN