diff --git a/api/controllers/cli_api/dify_cli/cli_api.py b/api/controllers/cli_api/dify_cli/cli_api.py index a8bd699edf..ef1fdab996 100644 --- a/api/controllers/cli_api/dify_cli/cli_api.py +++ b/api/controllers/cli_api/dify_cli/cli_api.py @@ -7,7 +7,6 @@ from controllers.cli_api.dify_cli.wraps import get_cli_user_tenant, plugin_data from controllers.cli_api.wraps import cli_api_only from controllers.console.wraps import setup_required from core.app.entities.app_invoke_entities import InvokeFrom -from core.workflow.file.helpers import get_signed_file_url_for_plugin from core.plugin.backwards_invocation.app import PluginAppBackwardsInvocation from core.plugin.backwards_invocation.base import BaseBackwardsInvocationResponse from core.plugin.backwards_invocation.model import PluginModelBackwardsInvocation @@ -23,6 +22,7 @@ from core.session.cli_api import CliContext from core.skill.entities import ToolInvocationRequest from core.tools.entities.tool_entities import ToolProviderType from core.tools.tool_manager import ToolManager +from core.workflow.file.helpers import get_signed_file_url_for_plugin from libs.helper import length_prefixed_response from models.account import Account from models.model import EndUser, Tenant diff --git a/api/core/agent/agent_app_runner.py b/api/core/agent/agent_app_runner.py index 6f3db15341..b8b1a9f8e1 100644 --- a/api/core/agent/agent_app_runner.py +++ b/api/core/agent/agent_app_runner.py @@ -8,7 +8,6 @@ from core.agent.entities import AgentEntity, AgentLog, AgentResult from core.agent.patterns.strategy_factory import StrategyFactory from core.app.apps.base_app_queue_manager import PublishFrom from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent -from core.workflow.file import file_manager from core.model_runtime.entities import ( AssistantPromptMessage, LLMResult, @@ -25,6 +24,7 @@ from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransfo from core.tools.__base.tool import Tool from core.tools.entities.tool_entities import ToolInvokeMeta from core.tools.tool_engine import ToolEngine +from core.workflow.file import file_manager from models.model import Message logger = logging.getLogger(__name__) diff --git a/api/core/agent/patterns/base.py b/api/core/agent/patterns/base.py index 37680abf1e..0551691bae 100644 --- a/api/core/agent/patterns/base.py +++ b/api/core/agent/patterns/base.py @@ -10,7 +10,6 @@ from collections.abc import Callable, Generator from typing import TYPE_CHECKING, Any from core.agent.entities import AgentLog, AgentResult, ExecutionContext -from core.workflow.file import File from core.model_manager import ModelInstance from core.model_runtime.entities import ( AssistantPromptMessage, @@ -23,6 +22,7 @@ from core.model_runtime.entities import ( from core.model_runtime.entities.llm_entities import LLMUsage from core.model_runtime.entities.message_entities import TextPromptMessageContent from core.tools.entities.tool_entities import ToolInvokeMessage, ToolInvokeMeta +from core.workflow.file import File if TYPE_CHECKING: from core.tools.__base.tool import Tool diff --git a/api/core/agent/patterns/function_call.py b/api/core/agent/patterns/function_call.py index 2bb5d21544..11d3939c18 100644 --- a/api/core/agent/patterns/function_call.py +++ b/api/core/agent/patterns/function_call.py @@ -12,7 +12,6 @@ from collections.abc import Generator from typing import Any, Union from core.agent.entities import AgentLog, AgentResult -from core.workflow.file import File from core.model_runtime.entities import ( AssistantPromptMessage, LLMResult, @@ -24,6 +23,7 @@ from core.model_runtime.entities import ( ToolPromptMessage, ) from core.tools.entities.tool_entities import ToolInvokeMeta +from core.workflow.file import File from .base import AgentPattern diff --git a/api/core/agent/patterns/react.py b/api/core/agent/patterns/react.py index 010ac40b29..7ef2ed4d9d 100644 --- a/api/core/agent/patterns/react.py +++ b/api/core/agent/patterns/react.py @@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Any, Union from core.agent.entities import AgentLog, AgentResult, AgentScratchpadUnit, ExecutionContext from core.agent.output_parser.cot_output_parser import CotAgentOutputParser -from core.workflow.file import File from core.model_manager import ModelInstance from core.model_runtime.entities import ( AssistantPromptMessage, @@ -18,6 +17,7 @@ from core.model_runtime.entities import ( PromptMessage, SystemPromptMessage, ) +from core.workflow.file import File from .base import AgentPattern, ToolInvokeHook diff --git a/api/core/agent/patterns/strategy_factory.py b/api/core/agent/patterns/strategy_factory.py index 47cd12888c..54892c5f1c 100644 --- a/api/core/agent/patterns/strategy_factory.py +++ b/api/core/agent/patterns/strategy_factory.py @@ -5,9 +5,9 @@ from __future__ import annotations from typing import TYPE_CHECKING from core.agent.entities import AgentEntity, ExecutionContext -from core.workflow.file.models import File from core.model_manager import ModelInstance from core.model_runtime.entities.model_entities import ModelFeature +from core.workflow.file.models import File from .base import AgentPattern, ToolInvokeHook from .function_call import FunctionCallStrategy diff --git a/api/core/llm_generator/output_parser/file_ref.py b/api/core/llm_generator/output_parser/file_ref.py index b21cabd492..8a29c26b58 100644 --- a/api/core/llm_generator/output_parser/file_ref.py +++ b/api/core/llm_generator/output_parser/file_ref.py @@ -10,8 +10,8 @@ This module provides utilities to: from collections.abc import Callable, Mapping, Sequence from typing import Any, cast -from core.workflow.file import File from core.variables.segments import ArrayFileSegment, FileSegment +from core.workflow.file import File FILE_PATH_FORMAT = "file-path" FILE_PATH_DESCRIPTION_SUFFIX = "this field contains a file path from the Dify sandbox" diff --git a/api/core/memory/node_token_buffer_memory.py b/api/core/memory/node_token_buffer_memory.py index d6dd6402a6..a9fbbca615 100644 --- a/api/core/memory/node_token_buffer_memory.py +++ b/api/core/memory/node_token_buffer_memory.py @@ -20,7 +20,6 @@ from typing import cast from sqlalchemy import select from sqlalchemy.orm import Session -from core.workflow.file import file_manager from core.memory.base import BaseMemory from core.model_manager import ModelInstance from core.model_runtime.entities import ( @@ -34,6 +33,7 @@ from core.model_runtime.entities import ( ) from core.model_runtime.entities.message_entities import PromptMessageContentUnionTypes from core.prompt.utils.extract_thread_messages import extract_thread_messages +from core.workflow.file import file_manager from extensions.ext_database import db from models.model import Message from models.workflow import WorkflowNodeExecutionModel diff --git a/api/core/sandbox/bash/session.py b/api/core/sandbox/bash/session.py index 9c14ba27c2..0dbf06e3e0 100644 --- a/api/core/sandbox/bash/session.py +++ b/api/core/sandbox/bash/session.py @@ -7,7 +7,6 @@ import os import shlex from types import TracebackType -from core.workflow.file import File, FileTransferMethod, FileType from core.sandbox.sandbox import Sandbox from core.session.cli_api import CliApiSession, CliApiSessionManager, CliContext from core.skill.entities import ToolAccessPolicy @@ -15,6 +14,7 @@ from core.skill.entities.tool_dependencies import ToolDependencies from core.tools.signature import sign_tool_file from core.tools.tool_file_manager import ToolFileManager from core.virtual_environment.__base.helpers import pipeline +from core.workflow.file import File, FileTransferMethod, FileType from ..bash.dify_cli import DifyCliConfig from ..entities import DifyCli diff --git a/api/core/workflow/nodes/file_upload/node.py b/api/core/workflow/nodes/file_upload/node.py index 669bdc8b56..8d8b6eae2d 100644 --- a/api/core/workflow/nodes/file_upload/node.py +++ b/api/core/workflow/nodes/file_upload/node.py @@ -5,13 +5,13 @@ from collections.abc import Mapping, Sequence from pathlib import PurePosixPath from typing import Any, cast -from core.workflow.file import File, FileTransferMethod from core.sandbox.bash.session import SANDBOX_READY_TIMEOUT from core.variables import ArrayFileSegment from core.variables.segments import ArrayStringSegment, FileSegment from core.virtual_environment.__base.command_future import CommandCancelledError, CommandTimeoutError from core.virtual_environment.__base.helpers import pipeline from core.workflow.enums import NodeType, WorkflowNodeExecutionStatus +from core.workflow.file import File, FileTransferMethod from core.workflow.node_events import NodeRunResult from core.workflow.nodes.base.node import Node from core.zip_sandbox import SandboxDownloadItem diff --git a/api/core/workflow/nodes/llm/entities.py b/api/core/workflow/nodes/llm/entities.py index aa9d87b0f4..bda7a344e8 100644 --- a/api/core/workflow/nodes/llm/entities.py +++ b/api/core/workflow/nodes/llm/entities.py @@ -5,12 +5,12 @@ from typing import Annotated, Any, Literal, TypeAlias from pydantic import BaseModel, ConfigDict, Field, field_serializer, field_validator from core.agent.entities import AgentLog, AgentResult -from core.workflow.file import File from core.model_runtime.entities import ImagePromptMessageContent, LLMMode from core.model_runtime.entities.llm_entities import LLMUsage from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig from core.tools.entities.tool_entities import ToolProviderType from core.workflow.entities import ToolCall, ToolCallResult +from core.workflow.file import File from core.workflow.node_events import AgentLogEvent from core.workflow.nodes.base import BaseNodeData from core.workflow.nodes.base.entities import VariableSelector diff --git a/api/tests/unit_tests/core/file/test_file_manager.py b/api/tests/unit_tests/core/file/test_file_manager.py index 8b0fab2b78..aa387c9aad 100644 --- a/api/tests/unit_tests/core/file/test_file_manager.py +++ b/api/tests/unit_tests/core/file/test_file_manager.py @@ -2,13 +2,13 @@ from unittest.mock import patch +from core.model_runtime.entities.message_entities import ImagePromptMessageContent from core.workflow.file import File, FileTransferMethod, FileType from core.workflow.file.file_manager import ( _encode_file_ref, restore_multimodal_content, to_prompt_message_content, ) -from core.model_runtime.entities.message_entities import ImagePromptMessageContent class TestEncodeFileRef: diff --git a/api/tests/unit_tests/core/llm_generator/output_parser/test_file_ref.py b/api/tests/unit_tests/core/llm_generator/output_parser/test_file_ref.py index 785c68ab94..8252574999 100644 --- a/api/tests/unit_tests/core/llm_generator/output_parser/test_file_ref.py +++ b/api/tests/unit_tests/core/llm_generator/output_parser/test_file_ref.py @@ -4,7 +4,6 @@ Unit tests for sandbox file path detection and conversion. import pytest -from core.workflow.file import File, FileTransferMethod, FileType from core.llm_generator.output_parser.file_ref import ( FILE_PATH_DESCRIPTION_SUFFIX, FILE_PATH_FORMAT, @@ -14,6 +13,7 @@ from core.llm_generator.output_parser.file_ref import ( is_file_path_property, ) from core.variables.segments import ArrayFileSegment, FileSegment +from core.workflow.file import File, FileTransferMethod, FileType def _build_file(file_id: str) -> File: