mirror of
https://github.com/langgenius/dify.git
synced 2026-05-03 17:08:03 +08:00
feat: add Command node support
- Introduced Command node type in workflow with associated UI components and translations. - Enhanced SandboxLayer to manage sandbox attachment for Command nodes during execution. - Updated various components and constants to integrate Command node functionality across the workflow.
This commit is contained in:
@ -2,14 +2,17 @@
|
||||
Sandbox Layer for managing VirtualEnvironment lifecycle during workflow execution.
|
||||
"""
|
||||
|
||||
import contextlib
|
||||
import logging
|
||||
from collections.abc import Mapping
|
||||
from typing import Any
|
||||
|
||||
from core.virtual_environment.__base.virtual_environment import VirtualEnvironment
|
||||
from core.virtual_environment.factory import SandboxFactory, SandboxType
|
||||
from core.workflow.enums import NodeType
|
||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
||||
from core.workflow.graph_events.base import GraphEngineEvent
|
||||
from core.workflow.nodes.base.node import Node
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -107,6 +110,26 @@ class SandboxLayer(GraphEngineLayer):
|
||||
"""
|
||||
pass
|
||||
|
||||
def on_node_run_start(self, node: Node[Any]) -> None:
|
||||
"""Attach sandbox handle to CommandNode instances."""
|
||||
if node.node_type is not NodeType.COMMAND:
|
||||
return
|
||||
|
||||
try:
|
||||
# FIXME: type: ignore[attr-defined]
|
||||
node.sandbox = self.sandbox # type: ignore[attr-defined]
|
||||
except Exception:
|
||||
logger.exception("Failed to attach sandbox to node")
|
||||
|
||||
def on_node_run_end(self, node: Node[Any], error: Exception | None) -> None:
|
||||
_ = error
|
||||
if node.node_type is not NodeType.COMMAND:
|
||||
return
|
||||
|
||||
with contextlib.suppress(Exception):
|
||||
# FIXME: type: ignore[attr-defined]
|
||||
node.sandbox = None # type: ignore[attr-defined]
|
||||
|
||||
def on_graph_end(self, error: Exception | None) -> None:
|
||||
"""
|
||||
Release the sandbox when workflow execution ends.
|
||||
|
||||
Reference in New Issue
Block a user