diff --git a/api/app.py b/api/app.py
index 9830a80904..4f393f6c20 100644
--- a/api/app.py
+++ b/api/app.py
@@ -18,7 +18,7 @@ else:
# so we need to disable gevent in debug mode.
# If you are using debugpy and set GEVENT_SUPPORT=True, you can debug with gevent.
if (flask_debug := os.environ.get("FLASK_DEBUG", "0")) and flask_debug.lower() in {"false", "0", "no"}:
- from gevent import monkey # type: ignore
+ from gevent import monkey
# gevent
monkey.patch_all()
diff --git a/api/commands.py b/api/commands.py
index 07bc6cd927..dc31dc0d80 100644
--- a/api/commands.py
+++ b/api/commands.py
@@ -668,7 +668,7 @@ def upgrade_db():
click.echo(click.style("Starting database migration.", fg="green"))
# run db migration
- import flask_migrate # type: ignore
+ import flask_migrate
flask_migrate.upgrade()
diff --git a/api/controllers/common/fields.py b/api/controllers/common/fields.py
index b1ebc444a5..79869916ed 100644
--- a/api/controllers/common/fields.py
+++ b/api/controllers/common/fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
parameters__system_parameters = {
"image_file_size_limit": fields.Integer,
diff --git a/api/controllers/console/admin.py b/api/controllers/console/admin.py
index 6e3273f5d4..8cb7ad9f5b 100644
--- a/api/controllers/console/admin.py
+++ b/api/controllers/console/admin.py
@@ -1,7 +1,7 @@
from functools import wraps
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound, Unauthorized
diff --git a/api/controllers/console/apikey.py b/api/controllers/console/apikey.py
index eb42507c63..47c93a15c6 100644
--- a/api/controllers/console/apikey.py
+++ b/api/controllers/console/apikey.py
@@ -1,7 +1,7 @@
from typing import Any
-import flask_restful # type: ignore
-from flask_login import current_user # type: ignore
+import flask_restful
+from flask_login import current_user
from flask_restful import Resource, fields, marshal_with
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/app/advanced_prompt_template.py b/api/controllers/console/app/advanced_prompt_template.py
index 8d0c5b84af..c228743fa5 100644
--- a/api/controllers/console/app/advanced_prompt_template.py
+++ b/api/controllers/console/app/advanced_prompt_template.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.wraps import account_initialization_required, setup_required
diff --git a/api/controllers/console/app/agent.py b/api/controllers/console/app/agent.py
index 920cae0d85..d433415894 100644
--- a/api/controllers/console/app/agent.py
+++ b/api/controllers/console/app/agent.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/annotation.py b/api/controllers/console/app/annotation.py
index 48353a63af..91058767eb 100644
--- a/api/controllers/console/app/annotation.py
+++ b/api/controllers/console/app/annotation.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/app/app.py b/api/controllers/console/app/app.py
index 3e908b76a7..f97209c369 100644
--- a/api/controllers/console/app/app.py
+++ b/api/controllers/console/app/app.py
@@ -1,8 +1,8 @@
import uuid
from typing import cast
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, inputs, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, inputs, marshal, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import BadRequest, Forbidden, abort
diff --git a/api/controllers/console/app/app_import.py b/api/controllers/console/app/app_import.py
index a159d4c5c4..5dc6515ce0 100644
--- a/api/controllers/console/app/app_import.py
+++ b/api/controllers/console/app/app_import.py
@@ -1,7 +1,7 @@
from typing import cast
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/app/audio.py b/api/controllers/console/app/audio.py
index 7519ae96c0..5f2def8d8e 100644
--- a/api/controllers/console/app/audio.py
+++ b/api/controllers/console/app/audio.py
@@ -1,7 +1,7 @@
import logging
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError
import services
diff --git a/api/controllers/console/app/completion.py b/api/controllers/console/app/completion.py
index c9820f70f7..732f5b799a 100644
--- a/api/controllers/console/app/completion.py
+++ b/api/controllers/console/app/completion.py
@@ -1,7 +1,7 @@
import logging
-import flask_login # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+import flask_login
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/app/conversation.py b/api/controllers/console/app/conversation.py
index 8827f129d9..70d6216497 100644
--- a/api/controllers/console/app/conversation.py
+++ b/api/controllers/console/app/conversation.py
@@ -1,9 +1,9 @@
from datetime import UTC, datetime
import pytz # pip install pytz
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy import func, or_
from sqlalchemy.orm import joinedload
from werkzeug.exceptions import Forbidden, NotFound
diff --git a/api/controllers/console/app/conversation_variables.py b/api/controllers/console/app/conversation_variables.py
index c0a20b7160..d49f433ba1 100644
--- a/api/controllers/console/app/conversation_variables.py
+++ b/api/controllers/console/app/conversation_variables.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/app/generator.py b/api/controllers/console/app/generator.py
index 4046417076..790369c052 100644
--- a/api/controllers/console/app/generator.py
+++ b/api/controllers/console/app/generator.py
@@ -1,7 +1,7 @@
import os
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.error import (
diff --git a/api/controllers/console/app/message.py b/api/controllers/console/app/message.py
index b5828b6b4b..b7a4c31a15 100644
--- a/api/controllers/console/app/message.py
+++ b/api/controllers/console/app/message.py
@@ -1,8 +1,8 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
from controllers.console import api
diff --git a/api/controllers/console/app/model_config.py b/api/controllers/console/app/model_config.py
index 8ecc8a9db5..f30e3e893c 100644
--- a/api/controllers/console/app/model_config.py
+++ b/api/controllers/console/app/model_config.py
@@ -2,8 +2,8 @@ import json
from typing import cast
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/ops_trace.py b/api/controllers/console/app/ops_trace.py
index 7176440e16..978c02412c 100644
--- a/api/controllers/console/app/ops_trace.py
+++ b/api/controllers/console/app/ops_trace.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import BadRequest
from controllers.console import api
diff --git a/api/controllers/console/app/site.py b/api/controllers/console/app/site.py
index f15f9d4dae..3c3a359eeb 100644
--- a/api/controllers/console/app/site.py
+++ b/api/controllers/console/app/site.py
@@ -1,7 +1,7 @@
from datetime import UTC, datetime
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import Forbidden, NotFound
from constants.languages import supported_language
diff --git a/api/controllers/console/app/statistic.py b/api/controllers/console/app/statistic.py
index a37d26b989..86aed77412 100644
--- a/api/controllers/console/app/statistic.py
+++ b/api/controllers/console/app/statistic.py
@@ -3,8 +3,8 @@ from decimal import Decimal
import pytz
from flask import jsonify
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/workflow.py b/api/controllers/console/app/workflow.py
index 2e077d2095..0c13adce9b 100644
--- a/api/controllers/console/app/workflow.py
+++ b/api/controllers/console/app/workflow.py
@@ -3,7 +3,7 @@ import logging
from typing import cast
from flask import abort, request
-from flask_restful import Resource, inputs, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, inputs, marshal_with, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
diff --git a/api/controllers/console/app/workflow_app_log.py b/api/controllers/console/app/workflow_app_log.py
index d863747995..c475aea9fc 100644
--- a/api/controllers/console/app/workflow_app_log.py
+++ b/api/controllers/console/app/workflow_app_log.py
@@ -1,6 +1,6 @@
from dateutil.parser import isoparse
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from controllers.console import api
diff --git a/api/controllers/console/app/workflow_run.py b/api/controllers/console/app/workflow_run.py
index 25a99c1e15..08ab61bbb9 100644
--- a/api/controllers/console/app/workflow_run.py
+++ b/api/controllers/console/app/workflow_run.py
@@ -1,5 +1,5 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/app/workflow_statistic.py b/api/controllers/console/app/workflow_statistic.py
index 097bf7d188..6c7c73707b 100644
--- a/api/controllers/console/app/workflow_statistic.py
+++ b/api/controllers/console/app/workflow_statistic.py
@@ -3,8 +3,8 @@ from decimal import Decimal
import pytz
from flask import jsonify
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.app.wraps import get_app_model
diff --git a/api/controllers/console/auth/activate.py b/api/controllers/console/auth/activate.py
index c56f551d49..1795563ff7 100644
--- a/api/controllers/console/auth/activate.py
+++ b/api/controllers/console/auth/activate.py
@@ -1,7 +1,7 @@
import datetime
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from constants.languages import supported_language
from controllers.console import api
diff --git a/api/controllers/console/auth/data_source_bearer_auth.py b/api/controllers/console/auth/data_source_bearer_auth.py
index 5f0762e4a5..b8c3c8f012 100644
--- a/api/controllers/console/auth/data_source_bearer_auth.py
+++ b/api/controllers/console/auth/data_source_bearer_auth.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/auth/data_source_oauth.py b/api/controllers/console/auth/data_source_oauth.py
index b4bd80fe2f..1049f864c3 100644
--- a/api/controllers/console/auth/data_source_oauth.py
+++ b/api/controllers/console/auth/data_source_oauth.py
@@ -2,8 +2,8 @@ import logging
import requests
from flask import current_app, redirect, request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/console/auth/forgot_password.py b/api/controllers/console/auth/forgot_password.py
index d4a33645ab..d73d8ce701 100644
--- a/api/controllers/console/auth/forgot_password.py
+++ b/api/controllers/console/auth/forgot_password.py
@@ -2,7 +2,7 @@ import base64
import secrets
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/auth/login.py b/api/controllers/console/auth/login.py
index 16c1dcc441..27864bab3d 100644
--- a/api/controllers/console/auth/login.py
+++ b/api/controllers/console/auth/login.py
@@ -1,8 +1,8 @@
from typing import cast
-import flask_login # type: ignore
+import flask_login
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
import services
from configs import dify_config
diff --git a/api/controllers/console/auth/oauth.py b/api/controllers/console/auth/oauth.py
index 33bafbf463..f5284cc43b 100644
--- a/api/controllers/console/auth/oauth.py
+++ b/api/controllers/console/auth/oauth.py
@@ -4,7 +4,7 @@ from typing import Optional
import requests
from flask import current_app, redirect, request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import Unauthorized
diff --git a/api/controllers/console/billing/billing.py b/api/controllers/console/billing/billing.py
index fd7b7bd8cb..4b0c82ae6c 100644
--- a/api/controllers/console/billing/billing.py
+++ b/api/controllers/console/billing/billing.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.wraps import account_initialization_required, only_edition_cloud, setup_required
diff --git a/api/controllers/console/billing/compliance.py b/api/controllers/console/billing/compliance.py
index 6d5d668709..9679632ac7 100644
--- a/api/controllers/console/billing/compliance.py
+++ b/api/controllers/console/billing/compliance.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from libs.helper import extract_remote_ip
from libs.login import login_required
diff --git a/api/controllers/console/datasets/data_source.py b/api/controllers/console/datasets/data_source.py
index 70bfb217eb..7b0d9373cf 100644
--- a/api/controllers/console/datasets/data_source.py
+++ b/api/controllers/console/datasets/data_source.py
@@ -2,8 +2,8 @@ import datetime
import json
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py
index 43615af709..571a395780 100644
--- a/api/controllers/console/datasets/datasets.py
+++ b/api/controllers/console/datasets/datasets.py
@@ -1,7 +1,7 @@
-import flask_restful # type: ignore
+import flask_restful
from flask import request
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services
diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py
index 3588abeff5..68601adfed 100644
--- a/api/controllers/console/datasets/datasets_document.py
+++ b/api/controllers/console/datasets/datasets_document.py
@@ -4,8 +4,8 @@ from datetime import UTC, datetime
from typing import cast
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal, marshal_with, reqparse
from sqlalchemy import asc, desc
from werkzeug.exceptions import Forbidden, NotFound
diff --git a/api/controllers/console/datasets/datasets_segments.py b/api/controllers/console/datasets/datasets_segments.py
index 5c54ecbe81..a145038672 100644
--- a/api/controllers/console/datasets/datasets_segments.py
+++ b/api/controllers/console/datasets/datasets_segments.py
@@ -2,8 +2,8 @@ import uuid
import pandas as pd
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services
diff --git a/api/controllers/console/datasets/external.py b/api/controllers/console/datasets/external.py
index aee8323f23..30b7f63aab 100644
--- a/api/controllers/console/datasets/external.py
+++ b/api/controllers/console/datasets/external.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal, reqparse
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
import services
diff --git a/api/controllers/console/datasets/hit_testing.py b/api/controllers/console/datasets/hit_testing.py
index d344e9d126..fba5d4c0f3 100644
--- a/api/controllers/console/datasets/hit_testing.py
+++ b/api/controllers/console/datasets/hit_testing.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console import api
from controllers.console.datasets.hit_testing_base import DatasetsHitTestingBase
diff --git a/api/controllers/console/datasets/hit_testing_base.py b/api/controllers/console/datasets/hit_testing_base.py
index bd944602c1..3b4c076863 100644
--- a/api/controllers/console/datasets/hit_testing_base.py
+++ b/api/controllers/console/datasets/hit_testing_base.py
@@ -1,7 +1,7 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import Forbidden, InternalServerError, NotFound
import services.dataset_service
diff --git a/api/controllers/console/datasets/metadata.py b/api/controllers/console/datasets/metadata.py
index e4cac40ca1..b1a83aa371 100644
--- a/api/controllers/console/datasets/metadata.py
+++ b/api/controllers/console/datasets/metadata.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import NotFound
from controllers.console import api
diff --git a/api/controllers/console/datasets/website.py b/api/controllers/console/datasets/website.py
index 33c926b4c9..4200a51709 100644
--- a/api/controllers/console/datasets/website.py
+++ b/api/controllers/console/datasets/website.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console import api
from controllers.console.datasets.error import WebsiteCrawlError
diff --git a/api/controllers/console/explore/audio.py b/api/controllers/console/explore/audio.py
index c7f9fec326..54bc590677 100644
--- a/api/controllers/console/explore/audio.py
+++ b/api/controllers/console/explore/audio.py
@@ -66,7 +66,7 @@ class ChatAudioApi(InstalledAppResource):
class ChatTextApi(InstalledAppResource):
def post(self, installed_app):
- from flask_restful import reqparse # type: ignore
+ from flask_restful import reqparse
app_model = installed_app.app
try:
diff --git a/api/controllers/console/explore/completion.py b/api/controllers/console/explore/completion.py
index e693a5a71b..4367da1162 100644
--- a/api/controllers/console/explore/completion.py
+++ b/api/controllers/console/explore/completion.py
@@ -1,8 +1,8 @@
import logging
from datetime import UTC, datetime
-from flask_login import current_user # type: ignore
-from flask_restful import reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/explore/conversation.py b/api/controllers/console/explore/conversation.py
index 600e78e09e..d7c161cc6d 100644
--- a/api/controllers/console/explore/conversation.py
+++ b/api/controllers/console/explore/conversation.py
@@ -1,6 +1,6 @@
-from flask_login import current_user # type: ignore
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/console/explore/installed_app.py b/api/controllers/console/explore/installed_app.py
index 132da11878..9336c35a0d 100644
--- a/api/controllers/console/explore/installed_app.py
+++ b/api/controllers/console/explore/installed_app.py
@@ -2,8 +2,8 @@ from datetime import UTC, datetime
from typing import Any
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, inputs, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, inputs, marshal_with, reqparse
from sqlalchemy import and_
from werkzeug.exceptions import BadRequest, Forbidden, NotFound
diff --git a/api/controllers/console/explore/message.py b/api/controllers/console/explore/message.py
index ff12959a65..822777604a 100644
--- a/api/controllers/console/explore/message.py
+++ b/api/controllers/console/explore/message.py
@@ -1,8 +1,8 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/console/explore/parameter.py b/api/controllers/console/explore/parameter.py
index bf9f0d6b28..a1280d91d1 100644
--- a/api/controllers/console/explore/parameter.py
+++ b/api/controllers/console/explore/parameter.py
@@ -1,4 +1,4 @@
-from flask_restful import marshal_with # type: ignore
+from flask_restful import marshal_with
from controllers.common import fields
from controllers.console import api
diff --git a/api/controllers/console/explore/recommended_app.py b/api/controllers/console/explore/recommended_app.py
index be6b1f5d21..ce85f495aa 100644
--- a/api/controllers/console/explore/recommended_app.py
+++ b/api/controllers/console/explore/recommended_app.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
from constants.languages import languages
from controllers.console import api
diff --git a/api/controllers/console/explore/saved_message.py b/api/controllers/console/explore/saved_message.py
index 3a1655d0ee..339e7007a0 100644
--- a/api/controllers/console/explore/saved_message.py
+++ b/api/controllers/console/explore/saved_message.py
@@ -1,6 +1,6 @@
-from flask_login import current_user # type: ignore
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_login import current_user
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import NotFound
from controllers.console import api
diff --git a/api/controllers/console/explore/workflow.py b/api/controllers/console/explore/workflow.py
index a2653a94f6..3f625e6609 100644
--- a/api/controllers/console/explore/workflow.py
+++ b/api/controllers/console/explore/workflow.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError
from controllers.console.app.error import (
diff --git a/api/controllers/console/explore/wraps.py b/api/controllers/console/explore/wraps.py
index b7ba81fba2..49ea81a8a0 100644
--- a/api/controllers/console/explore/wraps.py
+++ b/api/controllers/console/explore/wraps.py
@@ -1,7 +1,7 @@
from functools import wraps
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from werkzeug.exceptions import NotFound
from controllers.console.wraps import account_initialization_required
diff --git a/api/controllers/console/extension.py b/api/controllers/console/extension.py
index 833da0d03c..07a241ef86 100644
--- a/api/controllers/console/extension.py
+++ b/api/controllers/console/extension.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from constants import HIDDEN_VALUE
from controllers.console import api
diff --git a/api/controllers/console/feature.py b/api/controllers/console/feature.py
index da1171412f..70ab4ff865 100644
--- a/api/controllers/console/feature.py
+++ b/api/controllers/console/feature.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from libs.login import login_required
from services.feature_service import FeatureService
diff --git a/api/controllers/console/files.py b/api/controllers/console/files.py
index 8cf754bbd6..66b6214f82 100644
--- a/api/controllers/console/files.py
+++ b/api/controllers/console/files.py
@@ -1,8 +1,8 @@
from typing import Literal
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with
from werkzeug.exceptions import Forbidden
import services
diff --git a/api/controllers/console/init_validate.py b/api/controllers/console/init_validate.py
index cfed5fe7a4..b19e331d2e 100644
--- a/api/controllers/console/init_validate.py
+++ b/api/controllers/console/init_validate.py
@@ -1,7 +1,7 @@
import os
from flask import session
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from sqlalchemy import select
from sqlalchemy.orm import Session
diff --git a/api/controllers/console/ping.py b/api/controllers/console/ping.py
index 2a116112a3..cd28cc946e 100644
--- a/api/controllers/console/ping.py
+++ b/api/controllers/console/ping.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console import api
diff --git a/api/controllers/console/remote_files.py b/api/controllers/console/remote_files.py
index 30afc930a8..b8cf019e4f 100644
--- a/api/controllers/console/remote_files.py
+++ b/api/controllers/console/remote_files.py
@@ -2,8 +2,8 @@ import urllib.parse
from typing import cast
import httpx
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
import services
from controllers.common import helpers
diff --git a/api/controllers/console/setup.py b/api/controllers/console/setup.py
index 3b47f8f12f..e1f19a87a3 100644
--- a/api/controllers/console/setup.py
+++ b/api/controllers/console/setup.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from configs import dify_config
from libs.helper import StrLen, email, extract_remote_ip
diff --git a/api/controllers/console/tag/tags.py b/api/controllers/console/tag/tags.py
index 0d0d7ae95f..cb5dedca21 100644
--- a/api/controllers/console/tag/tags.py
+++ b/api/controllers/console/tag/tags.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/version.py b/api/controllers/console/version.py
index 7773c99944..7dea8e554e 100644
--- a/api/controllers/console/version.py
+++ b/api/controllers/console/version.py
@@ -2,7 +2,7 @@ import json
import logging
import requests
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from packaging import version
from configs import dify_config
diff --git a/api/controllers/console/workspace/__init__.py b/api/controllers/console/workspace/__init__.py
index 7af2b44a4a..072e904caf 100644
--- a/api/controllers/console/workspace/__init__.py
+++ b/api/controllers/console/workspace/__init__.py
@@ -1,6 +1,6 @@
from functools import wraps
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/workspace/account.py b/api/controllers/console/workspace/account.py
index e9c25e6c5b..a9dbf44456 100644
--- a/api/controllers/console/workspace/account.py
+++ b/api/controllers/console/workspace/account.py
@@ -2,8 +2,8 @@ import datetime
import pytz
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, marshal_with, reqparse
from configs import dify_config
from constants.languages import supported_language
diff --git a/api/controllers/console/workspace/agent_providers.py b/api/controllers/console/workspace/agent_providers.py
index a41d6c501c..88c37767e3 100644
--- a/api/controllers/console/workspace/agent_providers.py
+++ b/api/controllers/console/workspace/agent_providers.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.console import api
from controllers.console.wraps import account_initialization_required, setup_required
diff --git a/api/controllers/console/workspace/endpoint.py b/api/controllers/console/workspace/endpoint.py
index aa1a78935d..eb53dcb16e 100644
--- a/api/controllers/console/workspace/endpoint.py
+++ b/api/controllers/console/workspace/endpoint.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/load_balancing_config.py b/api/controllers/console/workspace/load_balancing_config.py
index 6e1d87cb12..ba74e2c074 100644
--- a/api/controllers/console/workspace/load_balancing_config.py
+++ b/api/controllers/console/workspace/load_balancing_config.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/members.py b/api/controllers/console/workspace/members.py
index a2b41c1d38..b9918b0d32 100644
--- a/api/controllers/console/workspace/members.py
+++ b/api/controllers/console/workspace/members.py
@@ -1,7 +1,7 @@
from urllib import parse
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, abort, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, abort, marshal_with, reqparse
import services
from configs import dify_config
diff --git a/api/controllers/console/workspace/model_providers.py b/api/controllers/console/workspace/model_providers.py
index d7d1cc8d00..ff0fcbda6e 100644
--- a/api/controllers/console/workspace/model_providers.py
+++ b/api/controllers/console/workspace/model_providers.py
@@ -1,8 +1,8 @@
import io
from flask import send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/models.py b/api/controllers/console/workspace/models.py
index 8b72a1ea3d..37d0f6c764 100644
--- a/api/controllers/console/workspace/models.py
+++ b/api/controllers/console/workspace/models.py
@@ -1,7 +1,7 @@
import logging
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from controllers.console import api
diff --git a/api/controllers/console/workspace/plugin.py b/api/controllers/console/workspace/plugin.py
index 6f9ae18750..fda5a7d3bb 100644
--- a/api/controllers/console/workspace/plugin.py
+++ b/api/controllers/console/workspace/plugin.py
@@ -1,8 +1,8 @@
import io
from flask import request, send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/console/workspace/tool_providers.py b/api/controllers/console/workspace/tool_providers.py
index 39ab454922..2b1379bfb2 100644
--- a/api/controllers/console/workspace/tool_providers.py
+++ b/api/controllers/console/workspace/tool_providers.py
@@ -1,8 +1,8 @@
import io
from flask import send_file
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, reqparse
from sqlalchemy.orm import Session
from werkzeug.exceptions import Forbidden
diff --git a/api/controllers/console/workspace/workspace.py b/api/controllers/console/workspace/workspace.py
index 332ed00222..71e6f9178f 100644
--- a/api/controllers/console/workspace/workspace.py
+++ b/api/controllers/console/workspace/workspace.py
@@ -1,8 +1,8 @@
import logging
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import Resource, fields, inputs, marshal, marshal_with, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import Resource, fields, inputs, marshal, marshal_with, reqparse
from werkzeug.exceptions import Unauthorized
import services
diff --git a/api/controllers/console/wraps.py b/api/controllers/console/wraps.py
index 6911181d82..360cbd9246 100644
--- a/api/controllers/console/wraps.py
+++ b/api/controllers/console/wraps.py
@@ -4,7 +4,7 @@ import time
from functools import wraps
from flask import abort, request
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from configs import dify_config
from controllers.console.workspace.error import AccountNotInitializedError
diff --git a/api/controllers/files/image_preview.py b/api/controllers/files/image_preview.py
index 9199069585..46c19e1fbb 100644
--- a/api/controllers/files/image_preview.py
+++ b/api/controllers/files/image_preview.py
@@ -1,7 +1,7 @@
from urllib.parse import quote
from flask import Response, request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import NotFound
import services
diff --git a/api/controllers/files/tool_files.py b/api/controllers/files/tool_files.py
index 2779514bed..1c3430ef4f 100644
--- a/api/controllers/files/tool_files.py
+++ b/api/controllers/files/tool_files.py
@@ -1,7 +1,7 @@
from urllib.parse import quote
from flask import Response
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import Forbidden, NotFound
from controllers.files import api
diff --git a/api/controllers/files/upload.py b/api/controllers/files/upload.py
index 178fb9477a..6641632169 100644
--- a/api/controllers/files/upload.py
+++ b/api/controllers/files/upload.py
@@ -1,7 +1,7 @@
from mimetypes import guess_extension
from flask import request
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
from werkzeug.exceptions import Forbidden
import services
diff --git a/api/controllers/inner_api/plugin/plugin.py b/api/controllers/inner_api/plugin/plugin.py
index 061ad62a4a..f3a1bd8fa5 100644
--- a/api/controllers/inner_api/plugin/plugin.py
+++ b/api/controllers/inner_api/plugin/plugin.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.console.wraps import setup_required
from controllers.inner_api import api
diff --git a/api/controllers/inner_api/plugin/wraps.py b/api/controllers/inner_api/plugin/wraps.py
index c31f9d22ed..709bba3f30 100644
--- a/api/controllers/inner_api/plugin/wraps.py
+++ b/api/controllers/inner_api/plugin/wraps.py
@@ -3,7 +3,7 @@ from functools import wraps
from typing import Optional
from flask import request
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from pydantic import BaseModel
from sqlalchemy.orm import Session
diff --git a/api/controllers/inner_api/workspace/workspace.py b/api/controllers/inner_api/workspace/workspace.py
index 9dfa5d23c3..a2fc2d4675 100644
--- a/api/controllers/inner_api/workspace/workspace.py
+++ b/api/controllers/inner_api/workspace/workspace.py
@@ -1,6 +1,6 @@
import json
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from controllers.console.wraps import setup_required
from controllers.inner_api import api
diff --git a/api/controllers/service_api/app/annotation.py b/api/controllers/service_api/app/annotation.py
index c50f551faf..bd1a23b723 100644
--- a/api/controllers/service_api/app/annotation.py
+++ b/api/controllers/service_api/app/annotation.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, marshal, marshal_with, reqparse # type: ignore
+from flask_restful import Resource, marshal, marshal_with, reqparse
from werkzeug.exceptions import Forbidden
from controllers.service_api import api
diff --git a/api/controllers/service_api/app/app.py b/api/controllers/service_api/app/app.py
index 7131e8a310..2c03aba33d 100644
--- a/api/controllers/service_api/app/app.py
+++ b/api/controllers/service_api/app/app.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
from controllers.common import fields
from controllers.service_api import api
@@ -47,7 +47,7 @@ class AppInfoApi(Resource):
def get(self, app_model: App):
"""Get app information"""
tags = [tag.name for tag in app_model.tags]
- return {"name": app_model.name, "description": app_model.description, "tags": tags}
+ return {"name": app_model.name, "description": app_model.description, "tags": tags, "mode": app_model.mode}
api.add_resource(AppParameterApi, "/parameters")
diff --git a/api/controllers/service_api/app/audio.py b/api/controllers/service_api/app/audio.py
index e6bcc0bfd2..2682c2e7f1 100644
--- a/api/controllers/service_api/app/audio.py
+++ b/api/controllers/service_api/app/audio.py
@@ -1,7 +1,7 @@
import logging
from flask import request
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError
import services
diff --git a/api/controllers/service_api/app/completion.py b/api/controllers/service_api/app/completion.py
index 38a65b7a90..1d9890199d 100644
--- a/api/controllers/service_api/app/completion.py
+++ b/api/controllers/service_api/app/completion.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import Resource, reqparse # type: ignore
+from flask_restful import Resource, reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/service_api/app/conversation.py b/api/controllers/service_api/app/conversation.py
index dfc357e1ab..36a7905572 100644
--- a/api/controllers/service_api/app/conversation.py
+++ b/api/controllers/service_api/app/conversation.py
@@ -1,5 +1,5 @@
-from flask_restful import Resource, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/service_api/app/file.py b/api/controllers/service_api/app/file.py
index 27b21b9f50..b0fd8e65ef 100644
--- a/api/controllers/service_api/app/file.py
+++ b/api/controllers/service_api/app/file.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import Resource, marshal_with # type: ignore
+from flask_restful import Resource, marshal_with
import services
from controllers.common.errors import FilenameNotExistsError
diff --git a/api/controllers/service_api/app/message.py b/api/controllers/service_api/app/message.py
index 95e538f4c7..1b148a9756 100644
--- a/api/controllers/service_api/app/message.py
+++ b/api/controllers/service_api/app/message.py
@@ -1,8 +1,8 @@
import json
import logging
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
import services
diff --git a/api/controllers/service_api/app/workflow.py b/api/controllers/service_api/app/workflow.py
index ca3e35aab8..e9bb2b046a 100644
--- a/api/controllers/service_api/app/workflow.py
+++ b/api/controllers/service_api/app/workflow.py
@@ -1,8 +1,8 @@
import logging
from dateutil.parser import isoparse
-from flask_restful import Resource, fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import Resource, fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import InternalServerError
diff --git a/api/controllers/service_api/dataset/dataset.py b/api/controllers/service_api/dataset/dataset.py
index e1e6f3168f..ee190245d5 100644
--- a/api/controllers/service_api/dataset/dataset.py
+++ b/api/controllers/service_api/dataset/dataset.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import marshal, reqparse # type: ignore
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import Forbidden, NotFound
import services.dataset_service
diff --git a/api/controllers/service_api/dataset/document.py b/api/controllers/service_api/dataset/document.py
index 9e943e2b2d..33eda37014 100644
--- a/api/controllers/service_api/dataset/document.py
+++ b/api/controllers/service_api/dataset/document.py
@@ -1,7 +1,7 @@
import json
from flask import request
-from flask_restful import marshal, reqparse # type: ignore
+from flask_restful import marshal, reqparse
from sqlalchemy import desc
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/service_api/dataset/metadata.py b/api/controllers/service_api/dataset/metadata.py
index 35578eae54..35582feea0 100644
--- a/api/controllers/service_api/dataset/metadata.py
+++ b/api/controllers/service_api/dataset/metadata.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user # type: ignore
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import NotFound
from controllers.service_api import api
diff --git a/api/controllers/service_api/dataset/segment.py b/api/controllers/service_api/dataset/segment.py
index 95753cfd67..fb3ca1e15f 100644
--- a/api/controllers/service_api/dataset/segment.py
+++ b/api/controllers/service_api/dataset/segment.py
@@ -1,6 +1,6 @@
from flask import request
-from flask_login import current_user # type: ignore
-from flask_restful import marshal, reqparse # type: ignore
+from flask_login import current_user
+from flask_restful import marshal, reqparse
from werkzeug.exceptions import NotFound
from controllers.service_api import api
diff --git a/api/controllers/service_api/index.py b/api/controllers/service_api/index.py
index 75d9141a6d..d24c4597e2 100644
--- a/api/controllers/service_api/index.py
+++ b/api/controllers/service_api/index.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from configs import dify_config
from controllers.service_api import api
diff --git a/api/controllers/service_api/workspace/models.py b/api/controllers/service_api/workspace/models.py
index 373f8019f9..3f18474674 100644
--- a/api/controllers/service_api/workspace/models.py
+++ b/api/controllers/service_api/workspace/models.py
@@ -1,5 +1,5 @@
-from flask_login import current_user # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_login import current_user
+from flask_restful import Resource
from controllers.service_api import api
from controllers.service_api.wraps import validate_dataset_token
diff --git a/api/controllers/service_api/wraps.py b/api/controllers/service_api/wraps.py
index 7facb03358..cd35ceac1d 100644
--- a/api/controllers/service_api/wraps.py
+++ b/api/controllers/service_api/wraps.py
@@ -7,7 +7,7 @@ from typing import Optional
from flask import current_app, request
from flask_login import user_logged_in # type: ignore
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from pydantic import BaseModel
from sqlalchemy import select, update
from sqlalchemy.orm import Session
diff --git a/api/controllers/web/app.py b/api/controllers/web/app.py
index a84b846112..c9a37af5ed 100644
--- a/api/controllers/web/app.py
+++ b/api/controllers/web/app.py
@@ -1,4 +1,4 @@
-from flask_restful import marshal_with # type: ignore
+from flask_restful import marshal_with
from controllers.common import fields
from controllers.web import api
diff --git a/api/controllers/web/audio.py b/api/controllers/web/audio.py
index 97d980d07c..06d9ad7564 100644
--- a/api/controllers/web/audio.py
+++ b/api/controllers/web/audio.py
@@ -65,7 +65,7 @@ class AudioApi(WebApiResource):
class TextApi(WebApiResource):
def post(self, app_model: App, end_user):
- from flask_restful import reqparse # type: ignore
+ from flask_restful import reqparse
try:
parser = reqparse.RequestParser()
diff --git a/api/controllers/web/completion.py b/api/controllers/web/completion.py
index 9677401490..fd3b9aa804 100644
--- a/api/controllers/web/completion.py
+++ b/api/controllers/web/completion.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/web/conversation.py b/api/controllers/web/conversation.py
index 419247ea14..98cea3974f 100644
--- a/api/controllers/web/conversation.py
+++ b/api/controllers/web/conversation.py
@@ -1,5 +1,5 @@
-from flask_restful import marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import marshal_with, reqparse
+from flask_restful.inputs import int_range
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/controllers/web/feature.py b/api/controllers/web/feature.py
index ce841a8814..0563ed2238 100644
--- a/api/controllers/web/feature.py
+++ b/api/controllers/web/feature.py
@@ -1,4 +1,4 @@
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from controllers.web import api
from services.feature_service import FeatureService
diff --git a/api/controllers/web/files.py b/api/controllers/web/files.py
index 1d4474015a..df06a73a85 100644
--- a/api/controllers/web/files.py
+++ b/api/controllers/web/files.py
@@ -1,5 +1,5 @@
from flask import request
-from flask_restful import marshal_with # type: ignore
+from flask_restful import marshal_with
import services
from controllers.common.errors import FilenameNotExistsError
diff --git a/api/controllers/web/message.py b/api/controllers/web/message.py
index 17e9a3990f..f2e1873601 100644
--- a/api/controllers/web/message.py
+++ b/api/controllers/web/message.py
@@ -1,7 +1,7 @@
import logging
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import InternalServerError, NotFound
import services
diff --git a/api/controllers/web/passport.py b/api/controllers/web/passport.py
index e30998c803..267dac223d 100644
--- a/api/controllers/web/passport.py
+++ b/api/controllers/web/passport.py
@@ -1,7 +1,7 @@
import uuid
from flask import request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from werkzeug.exceptions import NotFound, Unauthorized
from controllers.web import api
diff --git a/api/controllers/web/remote_files.py b/api/controllers/web/remote_files.py
index d559ab8e07..ae68df6bdc 100644
--- a/api/controllers/web/remote_files.py
+++ b/api/controllers/web/remote_files.py
@@ -1,7 +1,7 @@
import urllib.parse
import httpx
-from flask_restful import marshal_with, reqparse # type: ignore
+from flask_restful import marshal_with, reqparse
import services
from controllers.common import helpers
diff --git a/api/controllers/web/saved_message.py b/api/controllers/web/saved_message.py
index ab2d4abcd3..d7188ef0b3 100644
--- a/api/controllers/web/saved_message.py
+++ b/api/controllers/web/saved_message.py
@@ -1,5 +1,5 @@
-from flask_restful import fields, marshal_with, reqparse # type: ignore
-from flask_restful.inputs import int_range # type: ignore
+from flask_restful import fields, marshal_with, reqparse
+from flask_restful.inputs import int_range
from werkzeug.exceptions import NotFound
from controllers.web import api
diff --git a/api/controllers/web/site.py b/api/controllers/web/site.py
index e68dc7aa4a..0564b15ea3 100644
--- a/api/controllers/web/site.py
+++ b/api/controllers/web/site.py
@@ -1,4 +1,4 @@
-from flask_restful import fields, marshal_with # type: ignore
+from flask_restful import fields, marshal_with
from werkzeug.exceptions import Forbidden
from configs import dify_config
diff --git a/api/controllers/web/workflow.py b/api/controllers/web/workflow.py
index d2e183be78..590fd3f2c7 100644
--- a/api/controllers/web/workflow.py
+++ b/api/controllers/web/workflow.py
@@ -1,6 +1,6 @@
import logging
-from flask_restful import reqparse # type: ignore
+from flask_restful import reqparse
from werkzeug.exceptions import InternalServerError
from controllers.web import api
diff --git a/api/controllers/web/wraps.py b/api/controllers/web/wraps.py
index 1b4d263bee..c327c3df18 100644
--- a/api/controllers/web/wraps.py
+++ b/api/controllers/web/wraps.py
@@ -1,7 +1,7 @@
from functools import wraps
from flask import request
-from flask_restful import Resource # type: ignore
+from flask_restful import Resource
from werkzeug.exceptions import BadRequest, NotFound, Unauthorized
from controllers.web.error import WebSSOAuthRequiredError
diff --git a/api/core/indexing_runner.py b/api/core/indexing_runner.py
index a75a4c22d1..81bf59b2b6 100644
--- a/api/core/indexing_runner.py
+++ b/api/core/indexing_runner.py
@@ -9,7 +9,7 @@ import uuid
from typing import Any, Optional, cast
from flask import current_app
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy.orm.exc import ObjectDeletedError
from configs import dify_config
diff --git a/api/fields/annotation_fields.py b/api/fields/annotation_fields.py
index 1c58b3a257..379dcc6d16 100644
--- a/api/fields/annotation_fields.py
+++ b/api/fields/annotation_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/api_based_extension_fields.py b/api/fields/api_based_extension_fields.py
index d40407bfcc..a85d4a34db 100644
--- a/api/fields/api_based_extension_fields.py
+++ b/api/fields/api_based_extension_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/app_fields.py b/api/fields/app_fields.py
index f42364f110..0b0e2a2f54 100644
--- a/api/fields/app_fields.py
+++ b/api/fields/app_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.workflow_fields import workflow_partial_fields
from libs.helper import AppIconUrlField, TimestampField
diff --git a/api/fields/conversation_fields.py b/api/fields/conversation_fields.py
index 78e0794833..370e8a5a58 100644
--- a/api/fields/conversation_fields.py
+++ b/api/fields/conversation_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.member_fields import simple_account_fields
from libs.helper import TimestampField
diff --git a/api/fields/conversation_variable_fields.py b/api/fields/conversation_variable_fields.py
index 3aa3838def..71785e7d67 100644
--- a/api/fields/conversation_variable_fields.py
+++ b/api/fields/conversation_variable_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/data_source_fields.py b/api/fields/data_source_fields.py
index 608672121e..071071376f 100644
--- a/api/fields/data_source_fields.py
+++ b/api/fields/data_source_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/dataset_fields.py b/api/fields/dataset_fields.py
index 67d183c70d..32a88cc5db 100644
--- a/api/fields/dataset_fields.py
+++ b/api/fields/dataset_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/document_fields.py b/api/fields/document_fields.py
index 6d59ee9baa..7fd43e8dbe 100644
--- a/api/fields/document_fields.py
+++ b/api/fields/document_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.dataset_fields import dataset_fields
from libs.helper import TimestampField
diff --git a/api/fields/end_user_fields.py b/api/fields/end_user_fields.py
index aefa0b2758..99e529f9d1 100644
--- a/api/fields/end_user_fields.py
+++ b/api/fields/end_user_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
simple_end_user_fields = {
"id": fields.String,
diff --git a/api/fields/file_fields.py b/api/fields/file_fields.py
index dfc1b623d5..8b4839ef97 100644
--- a/api/fields/file_fields.py
+++ b/api/fields/file_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/hit_testing_fields.py b/api/fields/hit_testing_fields.py
index 4514c1b8ca..9d67999ea4 100644
--- a/api/fields/hit_testing_fields.py
+++ b/api/fields/hit_testing_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/installed_app_fields.py b/api/fields/installed_app_fields.py
index 16f265b9bb..e0b3e340f6 100644
--- a/api/fields/installed_app_fields.py
+++ b/api/fields/installed_app_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import AppIconUrlField, TimestampField
diff --git a/api/fields/member_fields.py b/api/fields/member_fields.py
index 0900bffb8a..8007b7e052 100644
--- a/api/fields/member_fields.py
+++ b/api/fields/member_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import AvatarUrlField, TimestampField
diff --git a/api/fields/message_fields.py b/api/fields/message_fields.py
index 76e61f0707..e6aebd810f 100644
--- a/api/fields/message_fields.py
+++ b/api/fields/message_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.conversation_fields import message_file_fields
from libs.helper import TimestampField
diff --git a/api/fields/raws.py b/api/fields/raws.py
index 493d4b6cce..15ec16ab13 100644
--- a/api/fields/raws.py
+++ b/api/fields/raws.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from core.file import File
diff --git a/api/fields/segment_fields.py b/api/fields/segment_fields.py
index 82311e5bb9..4126c24598 100644
--- a/api/fields/segment_fields.py
+++ b/api/fields/segment_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from libs.helper import TimestampField
diff --git a/api/fields/tag_fields.py b/api/fields/tag_fields.py
index 986cd725f7..9af4fc57dd 100644
--- a/api/fields/tag_fields.py
+++ b/api/fields/tag_fields.py
@@ -1,3 +1,3 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
tag_fields = {"id": fields.String, "name": fields.String, "type": fields.String, "binding_count": fields.String}
diff --git a/api/fields/workflow_app_log_fields.py b/api/fields/workflow_app_log_fields.py
index e8f8684ae0..823c99ec6b 100644
--- a/api/fields/workflow_app_log_fields.py
+++ b/api/fields/workflow_app_log_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.end_user_fields import simple_end_user_fields
from fields.member_fields import simple_account_fields
diff --git a/api/fields/workflow_fields.py b/api/fields/workflow_fields.py
index 971e99c259..9f1bef3b36 100644
--- a/api/fields/workflow_fields.py
+++ b/api/fields/workflow_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from core.helper import encrypter
from core.variables import SecretVariable, SegmentType, Variable
diff --git a/api/fields/workflow_run_fields.py b/api/fields/workflow_run_fields.py
index ef59c57ec3..74fdf8bd97 100644
--- a/api/fields/workflow_run_fields.py
+++ b/api/fields/workflow_run_fields.py
@@ -1,4 +1,4 @@
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from fields.end_user_fields import simple_end_user_fields
from fields.member_fields import simple_account_fields
diff --git a/api/libs/external_api.py b/api/libs/external_api.py
index 922d2d9cd3..2070df3e55 100644
--- a/api/libs/external_api.py
+++ b/api/libs/external_api.py
@@ -3,7 +3,7 @@ import sys
from typing import Any
from flask import current_app, got_request_exception
-from flask_restful import Api, http_status_message # type: ignore
+from flask_restful import Api, http_status_message
from werkzeug.datastructures import Headers
from werkzeug.exceptions import HTTPException
diff --git a/api/libs/helper.py b/api/libs/helper.py
index f0325734d8..afc8f31681 100644
--- a/api/libs/helper.py
+++ b/api/libs/helper.py
@@ -13,7 +13,7 @@ from typing import TYPE_CHECKING, Any, Optional, Union, cast
from zoneinfo import available_timezones
from flask import Response, stream_with_context
-from flask_restful import fields # type: ignore
+from flask_restful import fields
from configs import dify_config
from core.app.features.rate_limiting.rate_limit import RateLimitGenerator
diff --git a/api/libs/oauth_data_source.py b/api/libs/oauth_data_source.py
index a5ba08d351..1c151633f0 100644
--- a/api/libs/oauth_data_source.py
+++ b/api/libs/oauth_data_source.py
@@ -3,7 +3,7 @@ import urllib.parse
from typing import Any
import requests
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from extensions.ext_database import db
from models.source import DataSourceOauthBinding
diff --git a/api/mypy.ini b/api/mypy.ini
index 2898b9b52d..865be3c17d 100644
--- a/api/mypy.ini
+++ b/api/mypy.ini
@@ -7,3 +7,13 @@ exclude = (?x)(
| tests/
| migrations/
)
+
+[mypy-flask_login]
+ignore_missing_imports=True
+
+[mypy-flask_restful]
+ignore_missing_imports=True
+
+[mypy-flask_restful.inputs]
+ignore_missing_imports=True
+
diff --git a/api/services/agent_service.py b/api/services/agent_service.py
index 4c63611bb3..503b31ede2 100644
--- a/api/services/agent_service.py
+++ b/api/services/agent_service.py
@@ -2,7 +2,7 @@ import threading
from typing import Optional
import pytz
-from flask_login import current_user # type: ignore
+from flask_login import current_user
import contexts
from core.app.app_config.easy_ui_based_app.agent.manager import AgentConfigManager
diff --git a/api/services/annotation_service.py b/api/services/annotation_service.py
index 45ec1e9b5a..ae7b372b82 100644
--- a/api/services/annotation_service.py
+++ b/api/services/annotation_service.py
@@ -3,7 +3,7 @@ import uuid
from typing import cast
import pandas as pd
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy import or_
from werkzeug.datastructures import FileStorage
from werkzeug.exceptions import NotFound
diff --git a/api/services/app_service.py b/api/services/app_service.py
index e87a1c7931..2fae479e05 100644
--- a/api/services/app_service.py
+++ b/api/services/app_service.py
@@ -3,7 +3,7 @@ import logging
from datetime import UTC, datetime
from typing import Optional, cast
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from flask_sqlalchemy.pagination import Pagination
from configs import dify_config
diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py
index 44d2594ee8..de90355ebf 100644
--- a/api/services/dataset_service.py
+++ b/api/services/dataset_service.py
@@ -8,7 +8,7 @@ import uuid
from collections import Counter
from typing import Any, Optional
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy import func
from sqlalchemy.orm import Session
from werkzeug.exceptions import NotFound
diff --git a/api/services/file_service.py b/api/services/file_service.py
index b4442c36c3..2ca6b4f9aa 100644
--- a/api/services/file_service.py
+++ b/api/services/file_service.py
@@ -4,7 +4,7 @@ import os
import uuid
from typing import Any, Literal, Union
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from werkzeug.exceptions import NotFound
from configs import dify_config
diff --git a/api/services/metadata_service.py b/api/services/metadata_service.py
index 4cd2f9e8cb..c47c16f2f7 100644
--- a/api/services/metadata_service.py
+++ b/api/services/metadata_service.py
@@ -3,7 +3,7 @@ import datetime
import logging
from typing import Optional
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from core.rag.index_processor.constant.built_in_field import BuiltInField, MetadataDataSource
from extensions.ext_database import db
diff --git a/api/services/tag_service.py b/api/services/tag_service.py
index 1fbaee96e8..21cb861f87 100644
--- a/api/services/tag_service.py
+++ b/api/services/tag_service.py
@@ -1,7 +1,7 @@
import uuid
from typing import Optional
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from sqlalchemy import func
from werkzeug.exceptions import NotFound
diff --git a/api/services/website_service.py b/api/services/website_service.py
index 460a637a43..3913dc2efe 100644
--- a/api/services/website_service.py
+++ b/api/services/website_service.py
@@ -3,7 +3,7 @@ import json
from typing import Any
import requests
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from core.helper import encrypter
from core.rag.extractor.firecrawl.firecrawl_app import FirecrawlApp
diff --git a/api/services/workspace_service.py b/api/services/workspace_service.py
index e012fd4296..125e0c1b1e 100644
--- a/api/services/workspace_service.py
+++ b/api/services/workspace_service.py
@@ -1,4 +1,4 @@
-from flask_login import current_user # type: ignore
+from flask_login import current_user
from configs import dify_config
from extensions.ext_database import db
diff --git a/api/tests/integration_tests/tools/__mock_server/openapi_todo.py b/api/tests/integration_tests/tools/__mock_server/openapi_todo.py
index 2860739f0e..83f4d70ce9 100644
--- a/api/tests/integration_tests/tools/__mock_server/openapi_todo.py
+++ b/api/tests/integration_tests/tools/__mock_server/openapi_todo.py
@@ -1,5 +1,5 @@
from flask import Flask, request
-from flask_restful import Api, Resource # type: ignore
+from flask_restful import Api, Resource
app = Flask(__name__)
api = Api(app)
diff --git a/web/app/components/app-sidebar/app-info.tsx b/web/app/components/app-sidebar/app-info.tsx
index 18a9ac8bc8..37f96cf816 100644
--- a/web/app/components/app-sidebar/app-info.tsx
+++ b/web/app/components/app-sidebar/app-info.tsx
@@ -6,9 +6,11 @@ import {
RiDeleteBinLine,
RiEditLine,
RiEqualizer2Line,
+ RiExchange2Line,
RiFileCopy2Line,
RiFileDownloadLine,
RiFileUploadLine,
+ RiMoreLine,
} from '@remixicon/react'
import AppIcon from '../base/app-icon'
import SwitchAppModal from '../app/switch-app-modal'
@@ -32,6 +34,7 @@ import { fetchWorkflowDraft } from '@/service/workflow'
import ContentDialog from '@/app/components/base/content-dialog'
import Button from '@/app/components/base/button'
import CardView from '@/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/cardView'
+import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '../base/portal-to-follow-elem'
export type IAppInfoProps = {
expand: boolean
@@ -179,6 +182,11 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
const { isCurrentWorkspaceEditor } = useAppContext()
+ const [showMore, setShowMore] = useState(false)
+ const handleTriggerMore = useCallback(() => {
+ setShowMore(true)
+ }, [setShowMore])
+
if (!appDetail)
return null
@@ -276,22 +284,50 @@ const AppInfo = ({ expand }: IAppInfoProps) => {