From c5972343740f28c01f79b1391b392244afbd7fdd Mon Sep 17 00:00:00 2001 From: yangzheli <43645580+yangzheli@users.noreply.github.com> Date: Wed, 29 Oct 2025 10:19:29 +0800 Subject: [PATCH 1/6] fix(workflow): doc extractor node now correctly extracts mdx files (#27570) --- api/core/workflow/nodes/document_extractor/node.py | 1 + 1 file changed, 1 insertion(+) diff --git a/api/core/workflow/nodes/document_extractor/node.py b/api/core/workflow/nodes/document_extractor/node.py index cd5f50aaab..12cd7e2bd9 100644 --- a/api/core/workflow/nodes/document_extractor/node.py +++ b/api/core/workflow/nodes/document_extractor/node.py @@ -171,6 +171,7 @@ def _extract_text_by_file_extension(*, file_content: bytes, file_extension: str) ".txt" | ".markdown" | ".md" + | ".mdx" | ".html" | ".htm" | ".xml" From 42385f3ffa9fcfc309b108e58b4e761e74cb5204 Mon Sep 17 00:00:00 2001 From: Eric Guo Date: Wed, 29 Oct 2025 10:19:57 +0800 Subject: [PATCH 2/6] Sync celery queue name list (#27554) --- .gitignore | 1 + .vscode/launch.json.template | 2 +- api/.vscode/launch.json.example | 2 +- api/README.md | 2 +- api/docker/entrypoint.sh | 2 +- dev/start-worker | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 22a2c42566..76cfd7d9bf 100644 --- a/.gitignore +++ b/.gitignore @@ -97,6 +97,7 @@ __pypackages__/ # Celery stuff celerybeat-schedule +celerybeat-schedule.db celerybeat.pid # SageMath parsed files diff --git a/.vscode/launch.json.template b/.vscode/launch.json.template index f5a7f0893b..bf04d31998 100644 --- a/.vscode/launch.json.template +++ b/.vscode/launch.json.template @@ -40,7 +40,7 @@ "-c", "1", "-Q", - "dataset,generation,mail,ops_trace", + "dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline", "--loglevel", "INFO" ], diff --git a/api/.vscode/launch.json.example b/api/.vscode/launch.json.example index b9e32e2511..e97828f9d8 100644 --- a/api/.vscode/launch.json.example +++ b/api/.vscode/launch.json.example @@ -54,7 +54,7 @@ "--loglevel", "DEBUG", "-Q", - "dataset,generation,mail,ops_trace,app_deletion" + "dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline" ] } ] diff --git a/api/README.md b/api/README.md index ea6f547a0a..fc21158c7a 100644 --- a/api/README.md +++ b/api/README.md @@ -80,7 +80,7 @@ 1. If you need to handle and debug the async tasks (e.g. dataset importing and documents indexing), please start the worker service. ```bash -uv run celery -A app.celery worker -P gevent -c 2 --loglevel INFO -Q dataset,priority_pipeline,pipeline,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation +uv run celery -A app.celery worker -P gevent -c 2 --loglevel INFO -Q dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline ``` Additionally, if you want to debug the celery scheduled tasks, you can run the following command in another terminal to start the beat service: diff --git a/api/docker/entrypoint.sh b/api/docker/entrypoint.sh index 798113af68..8f6998119e 100755 --- a/api/docker/entrypoint.sh +++ b/api/docker/entrypoint.sh @@ -32,7 +32,7 @@ if [[ "${MODE}" == "worker" ]]; then exec celery -A celery_entrypoint.celery worker -P ${CELERY_WORKER_CLASS:-gevent} $CONCURRENCY_OPTION \ --max-tasks-per-child ${MAX_TASKS_PER_CHILD:-50} --loglevel ${LOG_LEVEL:-INFO} \ - -Q ${CELERY_QUEUES:-dataset,priority_pipeline,pipeline,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation} \ + -Q ${CELERY_QUEUES:-dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline} \ --prefetch-multiplier=1 elif [[ "${MODE}" == "beat" ]]; then diff --git a/dev/start-worker b/dev/start-worker index a7f16b853f..83d7bf0f3c 100755 --- a/dev/start-worker +++ b/dev/start-worker @@ -7,4 +7,4 @@ cd "$SCRIPT_DIR/.." uv --directory api run \ celery -A app.celery worker \ - -P gevent -c 1 --loglevel INFO -Q dataset,generation,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline + -P gevent -c 1 --loglevel INFO -Q dataset,mail,ops_trace,app_deletion,plugin,workflow_storage,conversation,priority_pipeline,pipeline From 07a2281730bb8c2ce909b89fd2199b545a70571e Mon Sep 17 00:00:00 2001 From: GuanMu Date: Wed, 29 Oct 2025 10:20:37 +0800 Subject: [PATCH 3/6] chore: add web type check step to GitHub Actions workflow (#27498) --- .github/workflows/style.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/style.yml b/.github/workflows/style.yml index 06584c1b78..e652657705 100644 --- a/.github/workflows/style.yml +++ b/.github/workflows/style.yml @@ -103,6 +103,11 @@ jobs: run: | pnpm run lint + - name: Web type check + if: steps.changed-files.outputs.any_changed == 'true' + working-directory: ./web + run: pnpm run type-check + docker-compose-template: name: Docker Compose Template runs-on: ubuntu-latest From d532b0631028d0d95bb6d0bd09d0b00d4c5236a9 Mon Sep 17 00:00:00 2001 From: Asuka Minato Date: Wed, 29 Oct 2025 11:25:15 +0900 Subject: [PATCH 4/6] example of use api.model (#27514) --- api/controllers/console/extension.py | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/api/controllers/console/extension.py b/api/controllers/console/extension.py index 4e1a8aeb3e..a1d36def0d 100644 --- a/api/controllers/console/extension.py +++ b/api/controllers/console/extension.py @@ -66,13 +66,7 @@ class APIBasedExtensionAPI(Resource): @account_initialization_required @marshal_with(api_based_extension_fields) def post(self): - parser = ( - reqparse.RequestParser() - .add_argument("name", type=str, required=True, location="json") - .add_argument("api_endpoint", type=str, required=True, location="json") - .add_argument("api_key", type=str, required=True, location="json") - ) - args = parser.parse_args() + args = api.payload _, current_tenant_id = current_account_with_tenant() extension_data = APIBasedExtension( @@ -125,13 +119,7 @@ class APIBasedExtensionDetailAPI(Resource): extension_data_from_db = APIBasedExtensionService.get_with_tenant_id(current_tenant_id, api_based_extension_id) - parser = ( - reqparse.RequestParser() - .add_argument("name", type=str, required=True, location="json") - .add_argument("api_endpoint", type=str, required=True, location="json") - .add_argument("api_key", type=str, required=True, location="json") - ) - args = parser.parse_args() + args = api.payload extension_data_from_db.name = args["name"] extension_data_from_db.api_endpoint = args["api_endpoint"] From 9e97248ede703aa6313ada3ca299823c6ddc2302 Mon Sep 17 00:00:00 2001 From: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> Date: Wed, 29 Oct 2025 10:26:40 +0800 Subject: [PATCH 5/6] fix unit test using enum (#27575) Signed-off-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com> --- .../apps/common/test_workflow_response_converter_truncation.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/tests/unit_tests/core/app/apps/common/test_workflow_response_converter_truncation.py b/api/tests/unit_tests/core/app/apps/common/test_workflow_response_converter_truncation.py index 964d62be1f..1c9f577a50 100644 --- a/api/tests/unit_tests/core/app/apps/common/test_workflow_response_converter_truncation.py +++ b/api/tests/unit_tests/core/app/apps/common/test_workflow_response_converter_truncation.py @@ -360,7 +360,7 @@ class TestWorkflowResponseConverterServiceApiTruncation: app_id="test_app_id", app_config=app_config, tenant_id="test_tenant", - app_mode="workflow", + app_mode=AppMode.WORKFLOW, invoke_from=invoke_from, inputs={"test_input": "test_value"}, user_id="test_user_id", From 23b49b830431e1776458730afcbb76f880771472 Mon Sep 17 00:00:00 2001 From: Jianwei Mao Date: Wed, 29 Oct 2025 10:40:59 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix=20issues=2027388,=20add=20missing=20env?= =?UTF-8?q?=20variable:=20ENFORCE=5FLANGGENIUS=5FPLUGIN=E2=80=A6=20(#27545?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/.env.example | 1 + docker/docker-compose.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/docker/.env.example b/docker/.env.example index 672d3d9836..7af92248dc 100644 --- a/docker/.env.example +++ b/docker/.env.example @@ -1255,6 +1255,7 @@ MARKETPLACE_ENABLED=true MARKETPLACE_API_URL=https://marketplace.dify.ai FORCE_VERIFYING_SIGNATURE=true +ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES=true PLUGIN_STDIO_BUFFER_SIZE=1024 PLUGIN_STDIO_MAX_BUFFER_SIZE=5242880 diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index 1b4012b446..34dfc19032 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -547,6 +547,7 @@ x-shared-env: &shared-api-worker-env MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true} MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} + ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES: ${ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES:-true} PLUGIN_STDIO_BUFFER_SIZE: ${PLUGIN_STDIO_BUFFER_SIZE:-1024} PLUGIN_STDIO_MAX_BUFFER_SIZE: ${PLUGIN_STDIO_MAX_BUFFER_SIZE:-5242880} PLUGIN_PYTHON_ENV_INIT_TIMEOUT: ${PLUGIN_PYTHON_ENV_INIT_TIMEOUT:-120}