"""pathways.nodes - Node types for pathways.

FOUNDATIONAL (declare data flow):
- InputNode: Declares pathway inputs with optional schema validation
- OutputNode: Declares pathway outputs with mapping from upstream nodes

PROCESSING (do the work):
- ToolNode: Calls any tool (web.search, code.execute, etc.)
- LLMNode: Direct LLM generation with optional tool calling
- TransformNode: Safe expression evaluation

COMPOSITION (pathways in pathways):
- PathwayNode: Execute a registered sub-pathway

FLOW CONTROL:
- ConditionalNode: Branch based on condition (if/else)

STATEFUL (for orchestration - use with mode=stateful):
- StageNode: Orchestration state with agent + transitions
- LoopNode: Iteration until condition
- CheckpointNode: Persistence point for resume

NodeTypeRegistry is NOT re-exported here. Import it directly:
    from core.pathways.nodes.registry import NodeTypeRegistry
"""

from core.pathways.models.tool import (
    ToolCall,
    ToolCallPlan,
    ToolExecutionResult,
    ToolResult,
)
from core.pathways.nodes.approval import ApprovalNode
from core.pathways.nodes.base import NodeBase
from core.pathways.nodes.checkpoint import CheckpointNode
from core.pathways.nodes.code_execute import CodeExecuteNode
from core.pathways.nodes.execution import (
    PathwayEvent,
    PathwayMetrics,
    PathwayRecord,
    PathwayStatus,
)
from core.pathways.nodes.flow import ConditionalNode
from core.pathways.nodes.for_each import ForEachNode
from core.pathways.nodes.foundational import InputNode, OutputNode
from core.pathways.nodes.llm import LLMNode
from core.pathways.nodes.loop import LoopNode
from core.pathways.nodes.stage import StageNode
from core.pathways.nodes.sub_pathway import PathwayNode
from core.pathways.nodes.tool import ToolNode
from core.pathways.nodes.transform import TransformNode

__all__ = [
    "ApprovalNode",
    "CheckpointNode",
    "CodeExecuteNode",
    "ConditionalNode",
    "ForEachNode",
    "InputNode",
    "LLMNode",
    "LoopNode",
    "NodeBase",
    "OutputNode",
    "PathwayEvent",
    "PathwayMetrics",
    "PathwayNode",
    "PathwayRecord",
    "PathwayStatus",
    "StageNode",
    "ToolCall",
    "ToolCallPlan",
    "ToolExecutionResult",
    "ToolNode",
    "ToolResult",
    "TransformNode",
]
