LangGraph Integration
Installation
pip install nomotic langgraphPattern
Example
from nomotic import GovernanceRuntime
from nomotic.governed_agent import GovernedAgentBase, GovernanceVetoError
def build_governed_graph(governed_agent: GovernedAgentBase):
"""Build a LangGraph StateGraph with governed nodes."""
def governed_read_node(state: dict) -> dict:
"""Read node with governance gate."""
try:
result = governed_agent.governed_run(
action_type="read",
target=state.get("target", "data"),
execute_fn=lambda: f"Data from {state.get('target', 'data')}",
)
return {**state, "data": result, "status": "read_complete"}
except GovernanceVetoError as e:
return {**state, "error": str(e), "status": "read_denied"}
def governed_write_node(state: dict) -> dict:
"""Write node with governance gate."""
try:
result = governed_agent.governed_run(
action_type="write",
target=state.get("target", "output"),
execute_fn=lambda: f"Wrote: {state.get('data', '')}",
)
return {**state, "result": result, "status": "write_complete"}
except GovernanceVetoError as e:
return {**state, "error": str(e), "status": "write_denied"}
def should_continue(state: dict) -> str:
"""Route based on governance verdict."""
if state.get("status", "").endswith("_denied"):
return "end"
return "write"
# Build the graph:
# read → (if allowed) → write → end
# read → (if denied) → end
from langgraph.graph import StateGraph, END
graph = StateGraph(dict)
graph.add_node("read", governed_read_node)
graph.add_node("write", governed_write_node)
graph.set_entry_point("read")
graph.add_conditional_edges("read", should_continue, {"write": "write", "end": END})
graph.add_edge("write", END)
return graph.compile()Last updated

