9#include <unordered_map>
11namespace neograph::graph {
23 enum class Fallback { BuiltinsOnly, GlobalFallback };
24 explicit GraphRegistry(Fallback fallback = Fallback::BuiltinsOnly);
29 std::shared_ptr<const GraphRegistry> snapshot()
const;
33 void register_reducer(
const std::string& name,
ReducerFn fn);
34 void register_condition(
const std::string& name,
ConditionFn fn);
36 void register_type(
const std::string& type,
NodeFactoryFn fn);
37 void register_type(
const std::string& type,
NodeFactoryFn fn, json config_schema);
38 void register_type(
const std::string& type,
NodeFactoryFn fn, json config_schema, json effects);
40 ReducerFn reducer(
const std::string& name)
const;
41 ConditionFn condition(
const std::string& name)
const;
42 std::optional<ConditionSpec> condition_spec(
const std::string& name)
const;
43 std::unique_ptr<GraphNode> create(
const std::string& type,
44 const std::string& name,
47 json config_schema(
const std::string& type)
const;
48 json node_effects(
const std::string& type)
const;
52 ConditionFn local_condition(
const std::string& name)
const;
53 std::optional<ConditionSpec> local_condition_spec(
const std::string& name)
const;
54 std::unique_ptr<GraphNode> create_local(
const std::string& type,
55 const std::string& name,
58 json local_config_schema(
const std::string& type)
const;
59 json local_node_effects(
const std::string& type)
const;
63 bool contains_condition(
const std::string& name)
const;
64 bool contains_type(
const std::string& type)
const;
80 mutable std::mutex mutex_;
81 Fallback fallback_ = Fallback::BuiltinsOnly;
83 std::unordered_map<std::string, ReducerFn> reducers_;
84 std::unordered_map<std::string, ConditionFn> conditions_;
85 std::unordered_map<std::string, ConditionSpec> condition_specs_;
86 std::unordered_map<std::string, NodeFactoryFn> node_factories_;
87 std::unordered_map<std::string, json> node_schemas_;
88 std::unordered_map<std::string, json> node_effects_;
NEOGRAPH_API export/import macro for shared-library builds.
Engine-owned registry of custom graph callables.
json export_schema() const
Export only entries owned by this registry.
json export_effective_schema() const
Export exactly the names resolvable by this registry (including defaults).
bool contains_reducer(const std::string &name) const
Local-only membership used by sealed admission profiles.
ReducerFn local_reducer(const std::string &name) const
Exact local-only resolvers; never consult process-global registries.
std::function< json(const json ¤t, const json &incoming)> ReducerFn
Custom reducer function signature.
std::function< std::string(const GraphState &)> ConditionFn
Condition function signature for conditional edge routing.
Legacy process-global registries for graph executables.
std::function< std::unique_ptr< GraphNode >(const std::string &name, const json &config, const NodeContext &ctx)> NodeFactoryFn
Factory function signature for creating graph nodes.
Singleton registry for conditional edge routing functions.
Dependency injection context passed to nodes during construction.