|
NeoGraph 0.10.0
A C++17 Graph Agent Engine Library — LangGraph for C++
|
Pure routing / next-step-planning logic extracted from GraphEngine. More...
#include <neograph/api.h>#include <neograph/graph/types.h>#include <map>#include <optional>#include <set>#include <vector>Go to the source code of this file.
Classes | |
| struct | neograph::graph::NextStepPlan |
| Plan for the next super-step. More... | |
| class | neograph::graph::Scheduler |
| Immutable routing oracle for a compiled graph. More... | |
| struct | neograph::graph::StepRouting |
| Per-node routing signal emitted by this super-step. More... | |
Typedefs | |
| using | neograph::graph::BarrierSpecs = std::map< std::string, std::set< std::string > > |
| Static barrier declarations extracted at graph-compile time. | |
| using | neograph::graph::BarrierState = std::map< std::string, std::set< std::string > > |
| Per-barrier signal bookkeeping. | |
Pure routing / next-step-planning logic extracted from GraphEngine.
Scheduler owns the graph topology (edges + conditional edges) and answers two questions:
It has NO knowledge of threading, checkpointing, retries, or HITL — every one of those concerns stays in GraphEngine. The upside is that routing-correctness tests (signal dispatch rules, Command/Send override semantics, END_NODE termination) can be written against Scheduler alone, without spinning up an engine or a graph of real nodes. That matters because the scheduling rules are where the predecessor-map → signal-dispatch refactor lived, and the class of bug we hit today (XOR/AND conflation, dropped siblings) is best caught by pure routing tests rather than by end-to-end runs.
Definition in file scheduler.h.
| using neograph::graph::BarrierSpecs = typedef std::map<std::string, std::set<std::string> > |
Static barrier declarations extracted at graph-compile time.
Maps barrier node name → set of upstream node names that must ALL signal before the barrier fires. Immutable after construction.
Definition at line 75 of file scheduler.h.
| using neograph::graph::BarrierState = typedef std::map<std::string, std::set<std::string> > |
Per-barrier signal bookkeeping.
Maps barrier node name → set of upstream node names that have signaled it so far. The caller (engine) owns this map and threads it through successive plan_next_step calls so partial signal counts accumulate across super-steps.
Entries are cleared by the Scheduler when a barrier fires (so the next round of signals starts fresh), and created lazily on first signal.
Definition at line 70 of file scheduler.h.