defmodule GenAI.Setting do @moduledoc """ A module representing a setting node in a graph structure. This module defines the structure and behavior of a setting node, including its identifier, setting, and value. """ @vsn 1.0 # import GenAI.Records.Session, only: [scope: 1, scope: 2] # require GenAI.Records.Session require GenAI.Records.Directive import GenAI.Records.Directive use GenAI.Graph.NodeBehaviour @derive GenAI.Graph.NodeProtocol # @derive GenAI.Thread.SessionProtocol defnodestruct(setting: nil, value: nil) defnodetype(setting: term, value: term) def apply_node_directives(this, graph_link, graph_container, session, context, options) def apply_node_directives(this, _, _, session, context, options) do entry = setting_entry(setting: this.setting) directive = GenAI.Session.State.Directive.static(entry, this.value, {:node, this.id}) GenAI.Thread.Session.append_directive(session, directive, context, options) end def inspect_custom_details(subject, opts) do [ "setting:", Inspect.Algebra.to_doc(subject.setting, opts), ", ", "value:", Inspect.Algebra.to_doc(subject.value, opts), ", ", ] end end