mirror of
https://github.com/langgenius/dify.git
synced 2026-03-26 16:50:14 +08:00
107 lines
2.8 KiB
Python
107 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
from collections.abc import Generator, Mapping, Sequence
|
|
from datetime import datetime
|
|
from typing import TYPE_CHECKING, Any, Protocol
|
|
|
|
from graphon.model_runtime.entities.llm_entities import LLMUsage
|
|
from graphon.nodes.tool_runtime_entities import (
|
|
ToolRuntimeHandle,
|
|
ToolRuntimeMessage,
|
|
ToolRuntimeParameter,
|
|
)
|
|
|
|
if TYPE_CHECKING:
|
|
from graphon.nodes.human_input.entities import HumanInputNodeData
|
|
from graphon.nodes.human_input.enums import HumanInputFormStatus
|
|
from graphon.nodes.tool.entities import ToolNodeData
|
|
from graphon.runtime import VariablePool
|
|
|
|
|
|
class ToolNodeRuntimeProtocol(Protocol):
|
|
"""Workflow-layer adapter owned by `core.workflow` and consumed by `graphon`.
|
|
|
|
The graph package depends only on these DTOs and lets the workflow layer
|
|
translate between graph-owned abstractions and `core.tools` internals.
|
|
"""
|
|
|
|
def get_runtime(
|
|
self,
|
|
*,
|
|
node_id: str,
|
|
node_data: ToolNodeData,
|
|
variable_pool: VariablePool | None,
|
|
) -> ToolRuntimeHandle: ...
|
|
|
|
def get_runtime_parameters(
|
|
self,
|
|
*,
|
|
tool_runtime: ToolRuntimeHandle,
|
|
) -> Sequence[ToolRuntimeParameter]: ...
|
|
|
|
def invoke(
|
|
self,
|
|
*,
|
|
tool_runtime: ToolRuntimeHandle,
|
|
tool_parameters: Mapping[str, Any],
|
|
workflow_call_depth: int,
|
|
provider_name: str,
|
|
) -> Generator[ToolRuntimeMessage, None, None]: ...
|
|
|
|
def get_usage(
|
|
self,
|
|
*,
|
|
tool_runtime: ToolRuntimeHandle,
|
|
) -> LLMUsage: ...
|
|
|
|
def build_file_reference(self, *, mapping: Mapping[str, Any]) -> Any: ...
|
|
|
|
def resolve_provider_icons(
|
|
self,
|
|
*,
|
|
provider_name: str,
|
|
default_icon: str | None = None,
|
|
) -> tuple[str | Mapping[str, str] | None, str | Mapping[str, str] | None]: ...
|
|
|
|
|
|
class HumanInputNodeRuntimeProtocol(Protocol):
|
|
"""Workflow-layer adapter for human-input runtime persistence and delivery."""
|
|
|
|
def get_form(
|
|
self,
|
|
*,
|
|
node_id: str,
|
|
) -> HumanInputFormStateProtocol | None: ...
|
|
|
|
def create_form(
|
|
self,
|
|
*,
|
|
node_id: str,
|
|
node_data: HumanInputNodeData,
|
|
rendered_content: str,
|
|
resolved_default_values: Mapping[str, Any],
|
|
) -> HumanInputFormStateProtocol: ...
|
|
|
|
|
|
class HumanInputFormStateProtocol(Protocol):
|
|
@property
|
|
def id(self) -> str: ...
|
|
|
|
@property
|
|
def rendered_content(self) -> str: ...
|
|
|
|
@property
|
|
def selected_action_id(self) -> str | None: ...
|
|
|
|
@property
|
|
def submitted_data(self) -> Mapping[str, Any] | None: ...
|
|
|
|
@property
|
|
def submitted(self) -> bool: ...
|
|
|
|
@property
|
|
def status(self) -> HumanInputFormStatus: ...
|
|
|
|
@property
|
|
def expiration_time(self) -> datetime: ...
|