Source code for orkes.graph.schema

from pydantic import BaseModel
from typing import Optional, TYPE_CHECKING, Union, List, Dict, Any
from orkes.shared.schema import OrkesMessagesSchema, RequestSchema
from datetime import datetime

if TYPE_CHECKING:
    from orkes.graph.unit import Node, Edge

[docs] class NodePoolItem(BaseModel): """ Represents an item in the node pool, which is a collection of nodes and their associated edges within the graph. Each item encapsulates a node and an optional edge, defining a step in the graph's execution path. Attributes: node (Node): The node in the graph. edge (Optional[Union[Edge, str]]): The edge originating from the node. It can be an `Edge` object or a string identifier. Defaults to None if there's no outgoing edge from this node. """ node: "Node" edge: Optional[Union["Edge", str]] = None model_config = { "arbitrary_types_allowed": True }
[docs] class NodeTrace(BaseModel): """ Represents the trace of a single node's execution within the graph. It captures key information about the node for logging, debugging, and visualization purposes. Attributes: node_name (str): The name of the node. node_id (str): The unique identifier of the node. node_description (Optional[str]): A description of the node's function. Defaults to None. meta (dict): A dictionary for storing any additional metadata related to the node, such as its type or properties. """ node_name: str node_id: str node_description: Optional[str] = None meta: dict
[docs] class LLMTraceSchema(BaseModel): """ Represents the input and output of an LLM interaction for tracking purposes. Attributes: messages (OrkesMessagesSchema): The messages sent to the LLM. tools (Optional[List[Dict]]): The tools provided to the LLM. parsed_response (RequestSchema): The parsed response from the LLM. edge_id (Optional[str]): The ID of the graph edge that triggered this interaction. model (str): The name of the model used. settings (Optional[Dict]): Any additional settings used for the request. """ messages: OrkesMessagesSchema tools: Optional[List[Dict]] = None parsed_response: RequestSchema model: str settings: Optional[Dict] = None
[docs] class FunctionTraceSchema(BaseModel): """ Represents the trace of a single function's execution, capturing its inputs, output, and timing. Attributes: function_name (str): The name of the traced function. input_args (tuple): The positional arguments passed to the function. input_kwargs (dict): The keyword arguments passed to the function. return_value (Any): The value returned by the function. elapsed (float): The Unix timestamp when the function execution finished. """ function_name: str input_args: tuple input_kwargs: dict return_value: Any elapsed: float
[docs] class EdgeTrace(BaseModel): """ Represents the trace of a single edge traversal during a graph execution. This model captures when and how an edge was traversed, including execution order, timing information, and optional runtime metadata. It provides fine-grained visibility into control flow between nodes. Attributes: edge_id (str): Unique identifier of the edge. edge_run_number (int): Sequential number indicating how many times this edge has been traversed during the current run. from_node (str): Name of the source node where the edge originates. to_node (Union[str, List[str]]): Name of the destination node(s). passes_left (int): Remaining number of allowed traversals before the edge reaches its maximum pass limit. edge_type (str | None): Type of edge (e.g., "__forward__", "__conditional__"). elapsed (float): Elapsed time in seconds since the start of the run when this edge was traversed. state_snapshot (dict): Snapshot of relevant runtime state at the moment the edge was traversed. meta (dict): Additional metadata associated with this edge traversal. llm_traces (list[LLMTraceSchema]): A list of LLM traces that occurred during this edge's execution. function_traces (list[FunctionTraceSchema]): A list of function traces that occurred during this edge's execution. """ edge_id: str edge_run_number: int from_node: str to_node: Union[str, List[str]] passes_left: int edge_type: Union[str, None] elapsed: float state_snapshot: dict = {} meta: dict function_traces: List[FunctionTraceSchema] = [] llm_traces: List[LLMTraceSchema] = []
[docs] class TracesSchema(BaseModel): """ Represents the complete execution trace of a graph run. This schema aggregates all node and edge traces for a single graph execution, along with execution metadata such as timing and status. It provides a comprehensive, ordered record of how the graph was executed. Attributes: graph_name (str): The name of the executed graph. graph_description (str): A description of the executed graph. run_id (str): The unique identifier for this execution run. start_time (float): The Unix timestamp (in seconds) indicating when the execution started. elapsed_time (float): Total execution duration in seconds. status (str): Final execution status (e.g., "SUCCESS", "FAILED"). nodes_trace (list[NodeTrace]): Traces for all nodes executed during the run. edges_trace (list[EdgeTrace]): Traces for all edges traversed during the run. """ graph_name : str graph_description: str run_id: str start_time: float = 0.0 elapsed_time: float = 0.0 status: str = "FAILED" nodes_trace: list[NodeTrace] edges_trace: list[EdgeTrace]