lib/vnext_genai/graph/node.ex
defmodule GenAI.Graph.Node do
@vsn 1.0
@moduledoc """
Represent a node on graph (generic type).
"""
use GenAI.Graph.NodeBehaviour
@derive GenAI.Graph.NodeProtocol
# @derive GenAI.Thread.SessionProtocol
defnodestruct(content: nil)
defnodetype(content: term)
def is_node?(subject) do
GenAI.Graph.NodeProtocol.impl_for(subject)
end
def is_node?(subject, of_type) do
GenAI.Graph.NodeProtocol.impl_for(subject) &&
{:ok, of_type} == GenAI.Graph.NodeProtocol.node_type(subject)
end
end