mirror of https://github.com/langgenius/dify.git
refactor(dify_graph): unify invoke and user enums source in workflow (#32873)
This commit is contained in:
parent
48c8aac092
commit
c8688ec371
|
|
@ -119,9 +119,6 @@ ignore_imports =
|
||||||
dify_graph.nodes.tool.tool_node -> core.tools.tool_manager
|
dify_graph.nodes.tool.tool_node -> core.tools.tool_manager
|
||||||
dify_graph.nodes.agent.agent_node -> core.agent.entities
|
dify_graph.nodes.agent.agent_node -> core.agent.entities
|
||||||
dify_graph.nodes.agent.agent_node -> core.agent.plugin_entities
|
dify_graph.nodes.agent.agent_node -> core.agent.plugin_entities
|
||||||
dify_graph.nodes.base.node -> core.app.entities.app_invoke_entities
|
|
||||||
dify_graph.nodes.human_input.human_input_node -> core.app.entities.app_invoke_entities
|
|
||||||
dify_graph.nodes.knowledge_index.knowledge_index_node -> core.app.entities.app_invoke_entities
|
|
||||||
dify_graph.nodes.knowledge_retrieval.knowledge_retrieval_node -> core.app.app_config.entities
|
dify_graph.nodes.knowledge_retrieval.knowledge_retrieval_node -> core.app.app_config.entities
|
||||||
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.advanced_prompt_transform
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.advanced_prompt_transform
|
||||||
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.simple_prompt_transform
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.simple_prompt_transform
|
||||||
|
|
@ -159,7 +156,6 @@ ignore_imports =
|
||||||
dify_graph.nodes.human_input.human_input_node -> extensions.ext_database
|
dify_graph.nodes.human_input.human_input_node -> extensions.ext_database
|
||||||
dify_graph.nodes.human_input.human_input_node -> core.repositories.human_input_repository
|
dify_graph.nodes.human_input.human_input_node -> core.repositories.human_input_repository
|
||||||
dify_graph.nodes.agent.agent_node -> models
|
dify_graph.nodes.agent.agent_node -> models
|
||||||
dify_graph.nodes.base.node -> models.enums
|
|
||||||
dify_graph.nodes.loop.loop_node -> core.app.workflow.layers.llm_quota
|
dify_graph.nodes.loop.loop_node -> core.app.workflow.layers.llm_quota
|
||||||
dify_graph.nodes.llm.node -> models.model
|
dify_graph.nodes.llm.node -> models.model
|
||||||
dify_graph.nodes.agent.agent_node -> services
|
dify_graph.nodes.agent.agent_node -> services
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, Workfl
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from dify_graph.entities.graph_init_params import GraphInitParams
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowType
|
from dify_graph.enums import UserFrom, WorkflowType
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
from dify_graph.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
||||||
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
|
|
@ -24,7 +24,6 @@ from dify_graph.variable_loader import VariableLoader
|
||||||
from dify_graph.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
from dify_graph.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.dataset import Document, Pipeline
|
from models.dataset import Document, Pipeline
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.model import EndUser
|
from models.model import EndUser
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ from core.workflow.node_factory import DifyNodeFactory
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from dify_graph.graph_events import (
|
from dify_graph.graph_events import (
|
||||||
|
|
@ -67,7 +68,6 @@ from dify_graph.nodes.node_mapping import NODE_TYPE_CLASSES_MAPPING
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
from collections.abc import Mapping, Sequence
|
from collections.abc import Mapping, Sequence
|
||||||
from enum import StrEnum
|
|
||||||
from typing import TYPE_CHECKING, Any, Optional
|
from typing import TYPE_CHECKING, Any, Optional
|
||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
|
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
|
||||||
|
|
@ -7,6 +6,7 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validat
|
||||||
from constants import UUID_NIL
|
from constants import UUID_NIL
|
||||||
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
||||||
from core.entities.provider_configuration import ProviderModelBundle
|
from core.entities.provider_configuration import ProviderModelBundle
|
||||||
|
from dify_graph.enums import InvokeFrom
|
||||||
from dify_graph.file import File, FileUploadConfig
|
from dify_graph.file import File, FileUploadConfig
|
||||||
from dify_graph.model_runtime.entities.model_entities import AIModelEntity
|
from dify_graph.model_runtime.entities.model_entities import AIModelEntity
|
||||||
|
|
||||||
|
|
@ -14,73 +14,6 @@ if TYPE_CHECKING:
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
|
||||||
|
|
||||||
class InvokeFrom(StrEnum):
|
|
||||||
"""
|
|
||||||
Invoke From.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# SERVICE_API indicates that this invocation is from an API call to Dify app.
|
|
||||||
#
|
|
||||||
# Description of service api in Dify docs:
|
|
||||||
# https://docs.dify.ai/en/guides/application-publishing/developing-with-apis
|
|
||||||
SERVICE_API = "service-api"
|
|
||||||
|
|
||||||
# WEB_APP indicates that this invocation is from
|
|
||||||
# the web app of the workflow (or chatflow).
|
|
||||||
#
|
|
||||||
# Description of web app in Dify docs:
|
|
||||||
# https://docs.dify.ai/en/guides/application-publishing/launch-your-webapp-quickly/README
|
|
||||||
WEB_APP = "web-app"
|
|
||||||
|
|
||||||
# TRIGGER indicates that this invocation is from a trigger.
|
|
||||||
# this is used for plugin trigger and webhook trigger.
|
|
||||||
TRIGGER = "trigger"
|
|
||||||
|
|
||||||
# EXPLORE indicates that this invocation is from
|
|
||||||
# the workflow (or chatflow) explore page.
|
|
||||||
EXPLORE = "explore"
|
|
||||||
# DEBUGGER indicates that this invocation is from
|
|
||||||
# the workflow (or chatflow) edit page.
|
|
||||||
DEBUGGER = "debugger"
|
|
||||||
# PUBLISHED_PIPELINE indicates that this invocation runs a published RAG pipeline workflow.
|
|
||||||
PUBLISHED_PIPELINE = "published"
|
|
||||||
|
|
||||||
# VALIDATION indicates that this invocation is from validation.
|
|
||||||
VALIDATION = "validation"
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def value_of(cls, value: str):
|
|
||||||
"""
|
|
||||||
Get value of given mode.
|
|
||||||
|
|
||||||
:param value: mode value
|
|
||||||
:return: mode
|
|
||||||
"""
|
|
||||||
for mode in cls:
|
|
||||||
if mode.value == value:
|
|
||||||
return mode
|
|
||||||
raise ValueError(f"invalid invoke from value {value}")
|
|
||||||
|
|
||||||
def to_source(self) -> str:
|
|
||||||
"""
|
|
||||||
Get source of invoke from.
|
|
||||||
|
|
||||||
:return: source
|
|
||||||
"""
|
|
||||||
if self == InvokeFrom.WEB_APP:
|
|
||||||
return "web_app"
|
|
||||||
elif self == InvokeFrom.DEBUGGER:
|
|
||||||
return "dev"
|
|
||||||
elif self == InvokeFrom.EXPLORE:
|
|
||||||
return "explore_app"
|
|
||||||
elif self == InvokeFrom.TRIGGER:
|
|
||||||
return "trigger"
|
|
||||||
elif self == InvokeFrom.SERVICE_API:
|
|
||||||
return "api"
|
|
||||||
|
|
||||||
return "dev"
|
|
||||||
|
|
||||||
|
|
||||||
class ModelConfigWithCredentialsEntity(BaseModel):
|
class ModelConfigWithCredentialsEntity(BaseModel):
|
||||||
"""
|
"""
|
||||||
Model Config With Credentials Entity.
|
Model Config With Credentials Entity.
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,6 @@ class ToolManager:
|
||||||
|
|
||||||
:return: the tool
|
:return: the tool
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if provider_type == ToolProviderType.BUILT_IN:
|
if provider_type == ToolProviderType.BUILT_IN:
|
||||||
# check if the builtin tool need credentials
|
# check if the builtin tool need credentials
|
||||||
provider_controller = cls.get_builtin_provider(provider_id, tenant_id)
|
provider_controller = cls.get_builtin_provider(provider_id, tenant_id)
|
||||||
|
|
@ -628,9 +627,9 @@ class ToolManager:
|
||||||
# MySQL: Use window function to achieve same result
|
# MySQL: Use window function to achieve same result
|
||||||
sql = """
|
sql = """
|
||||||
SELECT id FROM (
|
SELECT id FROM (
|
||||||
SELECT id,
|
SELECT id,
|
||||||
ROW_NUMBER() OVER (
|
ROW_NUMBER() OVER (
|
||||||
PARTITION BY tenant_id, provider
|
PARTITION BY tenant_id, provider
|
||||||
ORDER BY is_default DESC, created_at DESC
|
ORDER BY is_default DESC, created_at DESC
|
||||||
) as rn
|
) as rn
|
||||||
FROM tool_builtin_providers
|
FROM tool_builtin_providers
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.constants import ENVIRONMENT_VARIABLE_NODE_ID
|
from dify_graph.constants import ENVIRONMENT_VARIABLE_NODE_ID
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.entities.graph_config import NodeConfigData, NodeConfigDict
|
from dify_graph.entities.graph_config import NodeConfigData, NodeConfigDict
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.errors import WorkflowNodeRunFailedError
|
from dify_graph.errors import WorkflowNodeRunFailedError
|
||||||
from dify_graph.file.models import File
|
from dify_graph.file.models import File
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
|
|
@ -28,7 +29,6 @@ from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
||||||
from extensions.otel.runtime import is_instrument_flag_enabled
|
from extensions.otel.runtime import is_instrument_flag_enabled
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ from typing import Any
|
||||||
|
|
||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
|
|
||||||
|
from dify_graph.enums import InvokeFrom, UserFrom
|
||||||
|
|
||||||
|
|
||||||
class GraphInitParams(BaseModel):
|
class GraphInitParams(BaseModel):
|
||||||
"""GraphInitParams encapsulates the configurations and contextual information
|
"""GraphInitParams encapsulates the configurations and contextual information
|
||||||
|
|
@ -21,10 +23,6 @@ class GraphInitParams(BaseModel):
|
||||||
workflow_id: str = Field(..., description="workflow id")
|
workflow_id: str = Field(..., description="workflow id")
|
||||||
graph_config: Mapping[str, Any] = Field(..., description="graph config")
|
graph_config: Mapping[str, Any] = Field(..., description="graph config")
|
||||||
user_id: str = Field(..., description="user id")
|
user_id: str = Field(..., description="user id")
|
||||||
user_from: str = Field(
|
user_from: UserFrom = Field(..., description="user from, account or end-user")
|
||||||
..., description="user from, account or end-user"
|
invoke_from: InvokeFrom = Field(..., description="invoke from, service-api, web-app, explore or debugger")
|
||||||
) # Should be UserFrom enum: 'account' | 'end-user'
|
|
||||||
invoke_from: str = Field(
|
|
||||||
..., description="invoke from, service-api, web-app, explore or debugger"
|
|
||||||
) # Should be InvokeFrom enum: 'service-api' | 'web-app' | 'explore' | 'debugger'
|
|
||||||
call_depth: int = Field(..., description="call depth")
|
call_depth: int = Field(..., description="call depth")
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,39 @@ class SystemVariableKey(StrEnum):
|
||||||
INVOKE_FROM = "invoke_from"
|
INVOKE_FROM = "invoke_from"
|
||||||
|
|
||||||
|
|
||||||
|
class UserFrom(StrEnum):
|
||||||
|
ACCOUNT = "account"
|
||||||
|
END_USER = "end-user"
|
||||||
|
|
||||||
|
|
||||||
|
class InvokeFrom(StrEnum):
|
||||||
|
SERVICE_API = "service-api"
|
||||||
|
WEB_APP = "web-app"
|
||||||
|
TRIGGER = "trigger"
|
||||||
|
EXPLORE = "explore"
|
||||||
|
DEBUGGER = "debugger"
|
||||||
|
PUBLISHED_PIPELINE = "published"
|
||||||
|
VALIDATION = "validation"
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def value_of(cls, value: str) -> "InvokeFrom":
|
||||||
|
return cls(value)
|
||||||
|
|
||||||
|
def to_source(self) -> str:
|
||||||
|
"""Get source of invoke from.
|
||||||
|
|
||||||
|
:return: source
|
||||||
|
"""
|
||||||
|
source_mapping = {
|
||||||
|
InvokeFrom.WEB_APP: "web_app",
|
||||||
|
InvokeFrom.DEBUGGER: "dev",
|
||||||
|
InvokeFrom.EXPLORE: "explore_app",
|
||||||
|
InvokeFrom.TRIGGER: "trigger",
|
||||||
|
InvokeFrom.SERVICE_API: "api",
|
||||||
|
}
|
||||||
|
return source_mapping.get(self, "dev")
|
||||||
|
|
||||||
|
|
||||||
class NodeType(StrEnum):
|
class NodeType(StrEnum):
|
||||||
START = "start"
|
START = "start"
|
||||||
END = "end"
|
END = "end"
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,14 @@ from types import MappingProxyType
|
||||||
from typing import Any, ClassVar, Generic, TypeVar, cast, get_args, get_origin
|
from typing import Any, ClassVar, Generic, TypeVar, cast, get_args, get_origin
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
|
||||||
from dify_graph.entities import AgentNodeStrategyInit, GraphInitParams
|
from dify_graph.entities import AgentNodeStrategyInit, GraphInitParams
|
||||||
from dify_graph.enums import ErrorStrategy, NodeExecutionType, NodeState, NodeType, WorkflowNodeExecutionStatus
|
from dify_graph.enums import (
|
||||||
|
ErrorStrategy,
|
||||||
|
NodeExecutionType,
|
||||||
|
NodeState,
|
||||||
|
NodeType,
|
||||||
|
WorkflowNodeExecutionStatus,
|
||||||
|
)
|
||||||
from dify_graph.graph_events import (
|
from dify_graph.graph_events import (
|
||||||
GraphNodeEventBase,
|
GraphNodeEventBase,
|
||||||
NodeRunAgentLogEvent,
|
NodeRunAgentLogEvent,
|
||||||
|
|
@ -55,7 +60,6 @@ from dify_graph.node_events import (
|
||||||
)
|
)
|
||||||
from dify_graph.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
from .entities import BaseNodeData, RetryConfig
|
from .entities import BaseNodeData, RetryConfig
|
||||||
|
|
||||||
|
|
@ -229,8 +233,8 @@ class Node(Generic[NodeDataT]):
|
||||||
self.workflow_id = graph_init_params.workflow_id
|
self.workflow_id = graph_init_params.workflow_id
|
||||||
self.graph_config = graph_init_params.graph_config
|
self.graph_config = graph_init_params.graph_config
|
||||||
self.user_id = graph_init_params.user_id
|
self.user_id = graph_init_params.user_id
|
||||||
self.user_from = UserFrom(graph_init_params.user_from)
|
self.user_from = graph_init_params.user_from
|
||||||
self.invoke_from = InvokeFrom(graph_init_params.invoke_from)
|
self.invoke_from = graph_init_params.invoke_from
|
||||||
self.workflow_call_depth = graph_init_params.call_depth
|
self.workflow_call_depth = graph_init_params.call_depth
|
||||||
self.graph_runtime_state = graph_runtime_state
|
self.graph_runtime_state = graph_runtime_state
|
||||||
self.state: NodeState = NodeState.UNKNOWN # node execution state
|
self.state: NodeState = NodeState.UNKNOWN # node execution state
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,9 @@ import logging
|
||||||
from collections.abc import Generator, Mapping, Sequence
|
from collections.abc import Generator, Mapping, Sequence
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
|
||||||
from core.repositories.human_input_repository import HumanInputFormRepositoryImpl
|
from core.repositories.human_input_repository import HumanInputFormRepositoryImpl
|
||||||
from dify_graph.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from dify_graph.enums import NodeExecutionType, NodeType, WorkflowNodeExecutionStatus
|
from dify_graph.enums import InvokeFrom, NodeExecutionType, NodeType, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.node_events import (
|
from dify_graph.node_events import (
|
||||||
HumanInputFormFilledEvent,
|
HumanInputFormFilledEvent,
|
||||||
HumanInputFormTimeoutEvent,
|
HumanInputFormTimeoutEvent,
|
||||||
|
|
|
||||||
|
|
@ -603,8 +603,8 @@ class IterationNode(LLMUsageTrackingMixin, Node[IterationNodeData]):
|
||||||
workflow_id=self.workflow_id,
|
workflow_id=self.workflow_id,
|
||||||
graph_config=self.graph_config,
|
graph_config=self.graph_config,
|
||||||
user_id=self.user_id,
|
user_id=self.user_id,
|
||||||
user_from=self.user_from.value,
|
user_from=self.user_from,
|
||||||
invoke_from=self.invoke_from.value,
|
invoke_from=self.invoke_from,
|
||||||
call_depth=self.workflow_call_depth,
|
call_depth=self.workflow_call_depth,
|
||||||
)
|
)
|
||||||
# Create a deep copy of the variable pool for each iteration
|
# Create a deep copy of the variable pool for each iteration
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,8 @@ import logging
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from typing import TYPE_CHECKING, Any
|
from typing import TYPE_CHECKING, Any
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
|
||||||
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
||||||
from dify_graph.enums import NodeExecutionType, NodeType, SystemVariableKey
|
from dify_graph.enums import InvokeFrom, NodeExecutionType, NodeType, SystemVariableKey
|
||||||
from dify_graph.node_events import NodeRunResult
|
from dify_graph.node_events import NodeRunResult
|
||||||
from dify_graph.nodes.base.node import Node
|
from dify_graph.nodes.base.node import Node
|
||||||
from dify_graph.nodes.base.template import Template
|
from dify_graph.nodes.base.template import Template
|
||||||
|
|
|
||||||
|
|
@ -428,8 +428,8 @@ class LoopNode(LLMUsageTrackingMixin, Node[LoopNodeData]):
|
||||||
workflow_id=self.workflow_id,
|
workflow_id=self.workflow_id,
|
||||||
graph_config=self.graph_config,
|
graph_config=self.graph_config,
|
||||||
user_id=self.user_id,
|
user_id=self.user_id,
|
||||||
user_from=self.user_from.value,
|
user_from=self.user_from,
|
||||||
invoke_from=self.invoke_from.value,
|
invoke_from=self.invoke_from,
|
||||||
call_depth=self.workflow_call_depth,
|
call_depth=self.workflow_call_depth,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,6 @@ from .enums import (
|
||||||
AppTriggerStatus,
|
AppTriggerStatus,
|
||||||
AppTriggerType,
|
AppTriggerType,
|
||||||
CreatorUserRole,
|
CreatorUserRole,
|
||||||
UserFrom,
|
|
||||||
WorkflowRunTriggeredFrom,
|
WorkflowRunTriggeredFrom,
|
||||||
WorkflowTriggerStatus,
|
WorkflowTriggerStatus,
|
||||||
)
|
)
|
||||||
|
|
@ -204,7 +203,6 @@ __all__ = [
|
||||||
"TriggerOAuthTenantClient",
|
"TriggerOAuthTenantClient",
|
||||||
"TriggerSubscription",
|
"TriggerSubscription",
|
||||||
"UploadFile",
|
"UploadFile",
|
||||||
"UserFrom",
|
|
||||||
"Whitelist",
|
"Whitelist",
|
||||||
"Workflow",
|
"Workflow",
|
||||||
"WorkflowAppLog",
|
"WorkflowAppLog",
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,6 @@ class CreatorUserRole(StrEnum):
|
||||||
END_USER = "end_user"
|
END_USER = "end_user"
|
||||||
|
|
||||||
|
|
||||||
class UserFrom(StrEnum):
|
|
||||||
ACCOUNT = "account"
|
|
||||||
END_USER = "end-user"
|
|
||||||
|
|
||||||
|
|
||||||
class WorkflowRunTriggeredFrom(StrEnum):
|
class WorkflowRunTriggeredFrom(StrEnum):
|
||||||
DEBUGGING = "debugging"
|
DEBUGGING = "debugging"
|
||||||
APP_RUN = "app-run" # webapp / service api
|
APP_RUN = "app-run" # webapp / service api
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ from core.repositories.human_input_repository import HumanInputFormRepositoryImp
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from dify_graph.entities import GraphInitParams, WorkflowNodeExecution
|
from dify_graph.entities import GraphInitParams, WorkflowNodeExecution
|
||||||
from dify_graph.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from dify_graph.enums import ErrorStrategy, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
from dify_graph.enums import ErrorStrategy, UserFrom, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.errors import WorkflowNodeRunFailedError
|
from dify_graph.errors import WorkflowNodeRunFailedError
|
||||||
from dify_graph.file import File
|
from dify_graph.file import File
|
||||||
from dify_graph.graph_events import GraphNodeEventBase, NodeRunFailedEvent, NodeRunSucceededEvent
|
from dify_graph.graph_events import GraphNodeEventBase, NodeRunFailedEvent, NodeRunSucceededEvent
|
||||||
|
|
@ -49,7 +49,6 @@ from extensions.ext_storage import storage
|
||||||
from factories.file_factory import build_from_mapping, build_from_mappings
|
from factories.file_factory import build_from_mapping, build_from_mappings
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.human_input import HumanInputFormRecipient, RecipientType
|
from models.human_input import HumanInputFormRecipient, RecipientType
|
||||||
from models.model import App, AppMode
|
from models.model import App, AppMode
|
||||||
from models.tools import WorkflowToolProvider
|
from models.tools import WorkflowToolProvider
|
||||||
|
|
@ -1069,8 +1068,8 @@ class WorkflowService:
|
||||||
workflow_id=workflow.id,
|
workflow_id=workflow.id,
|
||||||
graph_config=workflow.graph_dict,
|
graph_config=workflow.graph_dict,
|
||||||
user_id=account.id,
|
user_id=account.id,
|
||||||
user_from=UserFrom.ACCOUNT.value,
|
user_from=UserFrom.ACCOUNT,
|
||||||
invoke_from=InvokeFrom.DEBUGGER.value,
|
invoke_from=InvokeFrom.DEBUGGER,
|
||||||
call_depth=0,
|
call_depth=0,
|
||||||
)
|
)
|
||||||
graph_runtime_state = GraphRuntimeState(
|
graph_runtime_state = GraphRuntimeState(
|
||||||
|
|
|
||||||
|
|
@ -7,14 +7,13 @@ from configs import dify_config
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.node_events import NodeRunResult
|
from dify_graph.node_events import NodeRunResult
|
||||||
from dify_graph.nodes.code.code_node import CodeNode
|
from dify_graph.nodes.code.code_node import CodeNode
|
||||||
from dify_graph.nodes.code.limits import CodeNodeLimits
|
from dify_graph.nodes.code.limits import CodeNodeLimits
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
from tests.integration_tests.workflow.nodes.__mock.code_executor import setup_code_executor_mock
|
from tests.integration_tests.workflow.nodes.__mock.code_executor import setup_code_executor_mock
|
||||||
|
|
||||||
CODE_MAX_STRING_LENGTH = dify_config.CODE_MAX_STRING_LENGTH
|
CODE_MAX_STRING_LENGTH = dify_config.CODE_MAX_STRING_LENGTH
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,12 @@ from core.helper.ssrf_proxy import ssrf_proxy
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.file.file_manager import file_manager
|
from dify_graph.file.file_manager import file_manager
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.nodes.http_request import HttpRequestNode, HttpRequestNodeConfig
|
from dify_graph.nodes.http_request import HttpRequestNode, HttpRequestNodeConfig
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
from tests.integration_tests.workflow.nodes.__mock.http import setup_http_mock
|
from tests.integration_tests.workflow.nodes.__mock.http import setup_http_mock
|
||||||
|
|
||||||
HTTP_REQUEST_CONFIG = HttpRequestNodeConfig(
|
HTTP_REQUEST_CONFIG = HttpRequestNodeConfig(
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,13 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.llm_generator.output_parser.structured_output import _parse_structured_output
|
from core.llm_generator.output_parser.structured_output import _parse_structured_output
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.node_events import StreamCompletedEvent
|
from dify_graph.node_events import StreamCompletedEvent
|
||||||
from dify_graph.nodes.llm.node import LLMNode
|
from dify_graph.nodes.llm.node import LLMNode
|
||||||
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
"""FOR MOCK FIXTURES, DO NOT REMOVE"""
|
"""FOR MOCK FIXTURES, DO NOT REMOVE"""
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,14 +6,13 @@ from unittest.mock import MagicMock
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.model_runtime.entities import AssistantPromptMessage, UserPromptMessage
|
from dify_graph.model_runtime.entities import AssistantPromptMessage, UserPromptMessage
|
||||||
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
||||||
from dify_graph.nodes.parameter_extractor.parameter_extractor_node import ParameterExtractorNode
|
from dify_graph.nodes.parameter_extractor.parameter_extractor_node import ParameterExtractorNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.enums import UserFrom
|
|
||||||
from tests.integration_tests.workflow.nodes.__mock.model import get_mocked_fetch_model_instance
|
from tests.integration_tests.workflow.nodes.__mock.model import get_mocked_fetch_model_instance
|
||||||
|
|
||||||
"""FOR MOCK FIXTURES, DO NOT REMOVE"""
|
"""FOR MOCK FIXTURES, DO NOT REMOVE"""
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,12 @@ import uuid
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.nodes.template_transform.template_renderer import TemplateRenderError
|
from dify_graph.nodes.template_transform.template_renderer import TemplateRenderError
|
||||||
from dify_graph.nodes.template_transform.template_transform_node import TemplateTransformNode
|
from dify_graph.nodes.template_transform.template_transform_node import TemplateTransformNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
class _SimpleJinja2Renderer:
|
class _SimpleJinja2Renderer:
|
||||||
|
|
|
||||||
|
|
@ -6,13 +6,12 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.tools.utils.configuration import ToolParameterConfigurationManager
|
from core.tools.utils.configuration import ToolParameterConfigurationManager
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.node_events import StreamCompletedEvent
|
from dify_graph.node_events import StreamCompletedEvent
|
||||||
from dify_graph.nodes.tool.tool_node import ToolNode
|
from dify_graph.nodes.tool.tool_node import ToolNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
def init_tool_node(config: dict):
|
def init_tool_node(config: dict):
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,12 @@ import pytest
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph.validation import GraphValidationError
|
from dify_graph.graph.validation import GraphValidationError
|
||||||
from dify_graph.nodes import NodeType
|
from dify_graph.nodes import NodeType
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
def _build_iteration_graph(node_id: str) -> dict[str, Any]:
|
def _build_iteration_graph(node_id: str) -> dict[str, Any]:
|
||||||
|
|
|
||||||
|
|
@ -8,14 +8,13 @@ import pytest
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import ErrorStrategy, NodeExecutionType, NodeType
|
from dify_graph.enums import ErrorStrategy, NodeExecutionType, NodeType, UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph.validation import GraphValidationError
|
from dify_graph.graph.validation import GraphValidationError
|
||||||
from dify_graph.nodes.base.entities import BaseNodeData
|
from dify_graph.nodes.base.entities import BaseNodeData
|
||||||
from dify_graph.nodes.base.node import Node
|
from dify_graph.nodes.base.node import Node
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
class _TestNodeData(BaseNodeData):
|
class _TestNodeData(BaseNodeData):
|
||||||
|
|
|
||||||
|
|
@ -201,8 +201,8 @@ def test_mock_factory_node_type_detection():
|
||||||
"""Test that MockNodeFactory correctly identifies nodes to mock."""
|
"""Test that MockNodeFactory correctly identifies nodes to mock."""
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
from .test_mock_factory import MockNodeFactory
|
from .test_mock_factory import MockNodeFactory
|
||||||
|
|
||||||
|
|
@ -311,9 +311,9 @@ def test_register_custom_mock_node():
|
||||||
"""Test registering a custom mock implementation for a node type."""
|
"""Test registering a custom mock implementation for a node type."""
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.nodes.template_transform import TemplateTransformNode
|
from dify_graph.nodes.template_transform import TemplateTransformNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
from .test_mock_factory import MockNodeFactory
|
from .test_mock_factory import MockNodeFactory
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ from unittest.mock import MagicMock
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities.graph_init_params import GraphInitParams
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
from dify_graph.entities.pause_reason import SchedulingPause
|
from dify_graph.entities.pause_reason import SchedulingPause
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph_engine import GraphEngine, GraphEngineConfig
|
from dify_graph.graph_engine import GraphEngine, GraphEngineConfig
|
||||||
from dify_graph.graph_engine.command_channels import InMemoryChannel
|
from dify_graph.graph_engine.command_channels import InMemoryChannel
|
||||||
|
|
@ -20,7 +21,6 @@ from dify_graph.graph_events import GraphRunAbortedEvent, GraphRunPausedEvent, G
|
||||||
from dify_graph.nodes.start.start_node import StartNode
|
from dify_graph.nodes.start.start_node import StartNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.variables import IntegerVariable, StringVariable
|
from dify_graph.variables import IntegerVariable, StringVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
def test_abort_command():
|
def test_abort_command():
|
||||||
|
|
|
||||||
|
|
@ -18,8 +18,8 @@ def test_mock_factory_registers_iteration_node():
|
||||||
"""Test that MockNodeFactory has iteration node registered."""
|
"""Test that MockNodeFactory has iteration node registered."""
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
# Create a MockNodeFactory instance
|
# Create a MockNodeFactory instance
|
||||||
graph_init_params = GraphInitParams(
|
graph_init_params = GraphInitParams(
|
||||||
|
|
@ -67,8 +67,8 @@ def test_mock_iteration_node_preserves_config():
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
from tests.unit_tests.core.workflow.graph_engine.test_mock_nodes import MockIterationNode
|
from tests.unit_tests.core.workflow.graph_engine.test_mock_nodes import MockIterationNode
|
||||||
|
|
||||||
# Create mock config
|
# Create mock config
|
||||||
|
|
@ -129,8 +129,8 @@ def test_mock_loop_node_preserves_config():
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
from tests.unit_tests.core.workflow.graph_engine.test_mock_nodes import MockLoopNode
|
from tests.unit_tests.core.workflow.graph_engine.test_mock_nodes import MockLoopNode
|
||||||
|
|
||||||
# Create mock config
|
# Create mock config
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,8 @@ def test_mock_factory_detection():
|
||||||
"""Test MockNodeFactory node type detection."""
|
"""Test MockNodeFactory node type detection."""
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
print("Testing MockNodeFactory detection...")
|
print("Testing MockNodeFactory detection...")
|
||||||
|
|
||||||
|
|
@ -156,8 +156,8 @@ def test_mock_factory_registration():
|
||||||
"""Test registering and unregistering mock node types."""
|
"""Test registering and unregistering mock node types."""
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
print("Testing MockNodeFactory registration...")
|
print("Testing MockNodeFactory registration...")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import NodeType, WorkflowNodeExecutionStatus
|
from dify_graph.enums import NodeType, UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph_engine import GraphEngine, GraphEngineConfig
|
from dify_graph.graph_engine import GraphEngine, GraphEngineConfig
|
||||||
from dify_graph.graph_engine.command_channels import InMemoryChannel
|
from dify_graph.graph_engine.command_channels import InMemoryChannel
|
||||||
|
|
@ -30,7 +30,6 @@ from dify_graph.node_events import NodeRunResult, StreamCompletedEvent
|
||||||
from dify_graph.nodes.llm.node import LLMNode
|
from dify_graph.nodes.llm.node import LLMNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
from .test_table_runner import TableTestRunner
|
from .test_table_runner import TableTestRunner
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,12 @@ from unittest.mock import MagicMock
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.nodes.answer.answer_node import AnswerNode
|
from dify_graph.nodes.answer.answer_node import AnswerNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
def test_execute_answer():
|
def test_execute_answer():
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,12 @@ from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.helper.ssrf_proxy import ssrf_proxy
|
from core.helper.ssrf_proxy import ssrf_proxy
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.file.file_manager import file_manager
|
from dify_graph.file.file_manager import file_manager
|
||||||
from dify_graph.nodes.http_request import HTTP_REQUEST_CONFIG_FILTER_KEY, HttpRequestNode, HttpRequestNodeConfig
|
from dify_graph.nodes.http_request import HTTP_REQUEST_CONFIG_FILTER_KEY, HttpRequestNode, HttpRequestNodeConfig
|
||||||
from dify_graph.nodes.http_request.entities import HttpRequestNodeTimeout, Response
|
from dify_graph.nodes.http_request.entities import HttpRequestNodeTimeout, Response
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
HTTP_REQUEST_CONFIG = HttpRequestNodeConfig(
|
HTTP_REQUEST_CONFIG = HttpRequestNodeConfig(
|
||||||
max_connect_timeout=10,
|
max_connect_timeout=10,
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from types import SimpleNamespace
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities.graph_init_params import GraphInitParams
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
from dify_graph.enums import NodeType
|
from dify_graph.enums import NodeType, UserFrom
|
||||||
from dify_graph.graph_events import (
|
from dify_graph.graph_events import (
|
||||||
NodeRunHumanInputFormFilledEvent,
|
NodeRunHumanInputFormFilledEvent,
|
||||||
NodeRunHumanInputFormTimeoutEvent,
|
NodeRunHumanInputFormTimeoutEvent,
|
||||||
|
|
@ -14,7 +14,6 @@ from dify_graph.nodes.human_input.human_input_node import HumanInputNode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
class _FakeFormRepository:
|
class _FakeFormRepository:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import pytest
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import SystemVariableKey, WorkflowNodeExecutionStatus
|
from dify_graph.enums import SystemVariableKey, UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.nodes.knowledge_index.entities import KnowledgeIndexNodeData
|
from dify_graph.nodes.knowledge_index.entities import KnowledgeIndexNodeData
|
||||||
from dify_graph.nodes.knowledge_index.exc import KnowledgeIndexNodeError
|
from dify_graph.nodes.knowledge_index.exc import KnowledgeIndexNodeError
|
||||||
from dify_graph.nodes.knowledge_index.knowledge_index_node import KnowledgeIndexNode
|
from dify_graph.nodes.knowledge_index.knowledge_index_node import KnowledgeIndexNode
|
||||||
|
|
@ -15,7 +15,6 @@ from dify_graph.repositories.summary_index_service_protocol import SummaryIndexS
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables.segments import StringSegment
|
from dify_graph.variables.segments import StringSegment
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import pytest
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.model_runtime.entities.llm_entities import LLMUsage
|
from dify_graph.model_runtime.entities.llm_entities import LLMUsage
|
||||||
from dify_graph.nodes.knowledge_retrieval.entities import (
|
from dify_graph.nodes.knowledge_retrieval.entities import (
|
||||||
KnowledgeRetrievalNodeData,
|
KnowledgeRetrievalNodeData,
|
||||||
|
|
@ -20,7 +20,6 @@ from dify_graph.repositories.rag_retrieval_protocol import RAGRetrievalProtocol,
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables import StringSegment
|
from dify_graph.variables import StringSegment
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ from core.entities.provider_entities import CustomConfiguration, SystemConfigura
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.prompt.entities.advanced_prompt_entities import MemoryConfig
|
from core.prompt.entities.advanced_prompt_entities import MemoryConfig
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.file import File, FileTransferMethod, FileType
|
from dify_graph.file import File, FileTransferMethod, FileType
|
||||||
from dify_graph.model_runtime.entities.common_entities import I18nObject
|
from dify_graph.model_runtime.entities.common_entities import I18nObject
|
||||||
from dify_graph.model_runtime.entities.message_entities import (
|
from dify_graph.model_runtime.entities.message_entities import (
|
||||||
|
|
@ -39,7 +40,6 @@ from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables import ArrayAnySegment, ArrayFileSegment, NoneSegment
|
from dify_graph.variables import ArrayAnySegment, ArrayFileSegment, NoneSegment
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.provider import ProviderType
|
from models.provider import ProviderType
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@ from collections.abc import Mapping
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
from core.app.entities.app_invoke_entities import InvokeFrom as LegacyInvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import NodeType
|
from dify_graph.enums import InvokeFrom, NodeType, UserFrom
|
||||||
from dify_graph.nodes.base.entities import BaseNodeData
|
from dify_graph.nodes.base.entities import BaseNodeData
|
||||||
from dify_graph.nodes.base.node import Node
|
from dify_graph.nodes.base.node import Node
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
|
|
@ -56,6 +57,36 @@ def test_node_hydrates_data_during_initialization():
|
||||||
|
|
||||||
assert node.node_data.foo == "bar"
|
assert node.node_data.foo == "bar"
|
||||||
assert node.title == "Sample"
|
assert node.title == "Sample"
|
||||||
|
assert node.user_from == UserFrom.ACCOUNT
|
||||||
|
assert node.invoke_from == InvokeFrom.DEBUGGER
|
||||||
|
|
||||||
|
|
||||||
|
def test_node_normalizes_legacy_invoke_from_enum():
|
||||||
|
graph_config: dict[str, object] = {}
|
||||||
|
init_params = GraphInitParams(
|
||||||
|
tenant_id="tenant",
|
||||||
|
app_id="app",
|
||||||
|
workflow_id="workflow",
|
||||||
|
graph_config=graph_config,
|
||||||
|
user_id="user",
|
||||||
|
user_from=UserFrom.ACCOUNT,
|
||||||
|
invoke_from=LegacyInvokeFrom.DEBUGGER,
|
||||||
|
call_depth=0,
|
||||||
|
)
|
||||||
|
runtime_state = GraphRuntimeState(
|
||||||
|
variable_pool=VariablePool(system_variables=SystemVariable(user_id="user", files=[]), user_inputs={}),
|
||||||
|
start_at=0.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
node = _SampleNode(
|
||||||
|
id="node-1",
|
||||||
|
config={"id": "node-1", "data": {"title": "Sample", "foo": "bar"}},
|
||||||
|
graph_init_params=init_params,
|
||||||
|
graph_runtime_state=runtime_state,
|
||||||
|
)
|
||||||
|
|
||||||
|
assert node.user_from == UserFrom.ACCOUNT
|
||||||
|
assert node.invoke_from == InvokeFrom.DEBUGGER
|
||||||
|
|
||||||
|
|
||||||
def test_missing_generic_argument_raises_type_error():
|
def test_missing_generic_argument_raises_type_error():
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from docx.oxml.text.paragraph import CT_P
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import NodeType, WorkflowNodeExecutionStatus
|
from dify_graph.enums import NodeType, UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.file import File, FileTransferMethod
|
from dify_graph.file import File, FileTransferMethod
|
||||||
from dify_graph.node_events import NodeRunResult
|
from dify_graph.node_events import NodeRunResult
|
||||||
from dify_graph.nodes.document_extractor import DocumentExtractorNode, DocumentExtractorNodeData
|
from dify_graph.nodes.document_extractor import DocumentExtractorNode, DocumentExtractorNodeData
|
||||||
|
|
@ -20,7 +20,6 @@ from dify_graph.nodes.document_extractor.node import (
|
||||||
from dify_graph.variables import ArrayFileSegment
|
from dify_graph.variables import ArrayFileSegment
|
||||||
from dify_graph.variables.segments import ArrayStringSegment
|
from dify_graph.variables.segments import ArrayStringSegment
|
||||||
from dify_graph.variables.variables import StringVariable
|
from dify_graph.variables.variables import StringVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import pytest
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.file import File, FileTransferMethod, FileType
|
from dify_graph.file import File, FileTransferMethod, FileType
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.nodes.if_else.entities import IfElseNodeData
|
from dify_graph.nodes.if_else.entities import IfElseNodeData
|
||||||
|
|
@ -17,7 +17,6 @@ from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.utils.condition.entities import Condition, SubCondition, SubVariableCondition
|
from dify_graph.utils.condition.entities import Condition, SubCondition, SubVariableCondition
|
||||||
from dify_graph.variables import ArrayFileSegment
|
from dify_graph.variables import ArrayFileSegment
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
def test_execute_if_else_result_true():
|
def test_execute_if_else_result_true():
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ from unittest.mock import MagicMock
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.enums import WorkflowNodeExecutionStatus
|
from dify_graph.enums import UserFrom, WorkflowNodeExecutionStatus
|
||||||
from dify_graph.file import File, FileTransferMethod, FileType
|
from dify_graph.file import File, FileTransferMethod, FileType
|
||||||
from dify_graph.nodes.list_operator.entities import (
|
from dify_graph.nodes.list_operator.entities import (
|
||||||
ExtractConfig,
|
ExtractConfig,
|
||||||
|
|
@ -17,7 +17,6 @@ from dify_graph.nodes.list_operator.entities import (
|
||||||
from dify_graph.nodes.list_operator.exc import InvalidKeyError
|
from dify_graph.nodes.list_operator.exc import InvalidKeyError
|
||||||
from dify_graph.nodes.list_operator.node import ListOperatorNode, _get_file_extract_string_func
|
from dify_graph.nodes.list_operator.node import ListOperatorNode, _get_file_extract_string_func
|
||||||
from dify_graph.variables import ArrayFileSegment
|
from dify_graph.variables import ArrayFileSegment
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ from uuid import uuid4
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.graph_events.node import NodeRunSucceededEvent
|
from dify_graph.graph_events.node import NodeRunSucceededEvent
|
||||||
from dify_graph.nodes.variable_assigner.common import helpers as common_helpers
|
from dify_graph.nodes.variable_assigner.common import helpers as common_helpers
|
||||||
|
|
@ -13,7 +14,6 @@ from dify_graph.nodes.variable_assigner.v1.node_data import WriteMode
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables import ArrayStringVariable, StringVariable
|
from dify_graph.variables import ArrayStringVariable, StringVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
DEFAULT_NODE_ID = "node_id"
|
DEFAULT_NODE_ID = "node_id"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ from uuid import uuid4
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from dify_graph.entities import GraphInitParams
|
from dify_graph.entities import GraphInitParams
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph import Graph
|
from dify_graph.graph import Graph
|
||||||
from dify_graph.nodes.variable_assigner.v2 import VariableAssignerNode
|
from dify_graph.nodes.variable_assigner.v2 import VariableAssignerNode
|
||||||
from dify_graph.nodes.variable_assigner.v2.enums import InputType, Operation
|
from dify_graph.nodes.variable_assigner.v2.enums import InputType, Operation
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables import ArrayStringVariable
|
from dify_graph.variables import ArrayStringVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
DEFAULT_NODE_ID = "node_id"
|
DEFAULT_NODE_ID = "node_id"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ from unittest.mock import Mock, patch
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities.graph_init_params import GraphInitParams
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.nodes.trigger_webhook.entities import (
|
from dify_graph.nodes.trigger_webhook.entities import (
|
||||||
ContentType,
|
ContentType,
|
||||||
Method,
|
Method,
|
||||||
|
|
@ -21,7 +22,6 @@ from dify_graph.nodes.trigger_webhook.node import TriggerWebhookNode
|
||||||
from dify_graph.runtime.graph_runtime_state import GraphRuntimeState
|
from dify_graph.runtime.graph_runtime_state import GraphRuntimeState
|
||||||
from dify_graph.runtime.variable_pool import VariablePool
|
from dify_graph.runtime.variable_pool import VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.workflow import WorkflowType
|
from models.workflow import WorkflowType
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import pytest
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from dify_graph.entities.graph_init_params import GraphInitParams
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionStatus
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.file import File, FileTransferMethod, FileType
|
from dify_graph.file import File, FileTransferMethod, FileType
|
||||||
from dify_graph.nodes.trigger_webhook.entities import (
|
from dify_graph.nodes.trigger_webhook.entities import (
|
||||||
ContentType,
|
ContentType,
|
||||||
|
|
@ -18,7 +19,6 @@ from dify_graph.runtime.graph_runtime_state import GraphRuntimeState
|
||||||
from dify_graph.runtime.variable_pool import VariablePool
|
from dify_graph.runtime.variable_pool import VariablePool
|
||||||
from dify_graph.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from dify_graph.variables import FileVariable, StringVariable
|
from dify_graph.variables import FileVariable, StringVariable
|
||||||
from models.enums import UserFrom
|
|
||||||
from models.workflow import WorkflowType
|
from models.workflow import WorkflowType
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
|
from dify_graph.enums import UserFrom
|
||||||
from dify_graph.graph_engine.command_channels.redis_channel import RedisChannel
|
from dify_graph.graph_engine.command_channels.redis_channel import RedisChannel
|
||||||
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from models.enums import UserFrom
|
|
||||||
|
|
||||||
|
|
||||||
class TestWorkflowEntryRedisChannel:
|
class TestWorkflowEntryRedisChannel:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue