NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
admission.h
Go to the documentation of this file.
1
5#pragma once
6
9
10#include <cstdint>
11#include <memory>
12#include <string>
13#include <string_view>
14#include <vector>
15
16namespace neograph::program {
17
18inline constexpr std::string_view TRUSTED_NATIVE_CAPABILITY = "neograph.native.trusted";
20inline constexpr std::uint32_t DEFAULT_MAX_CHILD_DEPTH = 1;
22inline constexpr std::uint32_t MAX_SUPPORTED_CHILD_DEPTH = 8;
23
24enum class AdmissionMode : std::uint8_t {
25 MultiTenant,
26 TrustedEmbedding,
27};
28
29NEOGRAPH_PROGRAM_API std::string_view to_string(AdmissionMode mode) noexcept;
30NEOGRAPH_PROGRAM_API AdmissionMode admission_mode_from_string(std::string_view value);
31
32struct BudgetLimits {
33 std::uint64_t wall_time_ms = 0;
34 std::uint64_t model_tokens = 0;
35 std::uint64_t monetary_microunits = 0;
36 std::uint32_t max_concurrency = 0;
37 std::uint64_t max_program_operations = 0;
38 std::uint64_t max_core_steps = 0;
39 std::uint32_t max_dynamic_compiles = 0;
40 std::uint32_t max_child_depth = 0;
41 std::uint64_t max_total_children = 0;
42
43 bool operator==(const BudgetLimits&) const = default;
44};
45
46class NEOGRAPH_PROGRAM_API AdmissionProfile {
47public:
48 AdmissionProfile(const AdmissionProfile&) noexcept = default;
49 AdmissionProfile(AdmissionProfile&&) noexcept = default;
50 AdmissionProfile& operator=(const AdmissionProfile&) noexcept = default;
51 AdmissionProfile& operator=(AdmissionProfile&&) noexcept = default;
52 ~AdmissionProfile();
53
54 const std::string& id() const noexcept;
55 const std::string& semantic_version() const noexcept;
56 const std::string& fingerprint() const noexcept;
57 const std::string& registry_fingerprint() const noexcept;
58 AdmissionMode mode() const noexcept;
59 std::uint32_t max_program_schema_version() const noexcept;
61 ExecutionGuarantee minimum_execution_guarantee() const noexcept;
63 std::vector<SourceKind> allowed_source_kinds() const;
64 std::vector<ExecutableIdentity> allowed_executables() const;
65 std::vector<EffectMode> allowed_effect_modes() const;
66 json manifest() const;
67 std::string serialize_canonical() const;
68
69 static AdmissionProfile parse(std::string_view bytes);
70
71private:
72 struct Impl;
73 std::shared_ptr<const Impl> impl_;
74
75 explicit AdmissionProfile(std::shared_ptr<const Impl> impl);
76 friend class AdmissionProfileBuilder;
77 friend class PolicySnapshotBuilder;
78};
79
80class NEOGRAPH_PROGRAM_API AdmissionProfileBuilder {
81public:
82 AdmissionProfileBuilder();
83 AdmissionProfileBuilder(AdmissionProfileBuilder&&) noexcept;
84 AdmissionProfileBuilder& operator=(AdmissionProfileBuilder&&) noexcept;
85 AdmissionProfileBuilder(const AdmissionProfileBuilder&) = delete;
86 AdmissionProfileBuilder& operator=(const AdmissionProfileBuilder&) = delete;
87 ~AdmissionProfileBuilder();
88
89 AdmissionProfileBuilder& id(std::string value);
90 AdmissionProfileBuilder& semantic_version(std::string value);
91 AdmissionProfileBuilder& registry(RegistrySnapshot snapshot);
92 AdmissionProfileBuilder& mode(AdmissionMode value);
93 AdmissionProfileBuilder& max_program_schema_version(std::uint32_t value);
94 AdmissionProfileBuilder& minimum_execution_guarantee(ExecutionGuarantee value);
96 AdmissionProfileBuilder& allow_source_kind(SourceKind value);
97 AdmissionProfileBuilder& allow_executable(ExecutableIdentity value);
98 AdmissionProfileBuilder& allow_effect_mode(EffectMode value);
99
100 AdmissionProfile build() &&;
101
102private:
103 struct Impl;
104 friend class AdmissionProfile;
105 std::unique_ptr<Impl> impl_;
106};
107
108class NEOGRAPH_PROGRAM_API PolicySnapshot {
109public:
110 PolicySnapshot(const PolicySnapshot&) noexcept = default;
111 PolicySnapshot(PolicySnapshot&&) noexcept = default;
112 PolicySnapshot& operator=(const PolicySnapshot&) noexcept = default;
113 PolicySnapshot& operator=(PolicySnapshot&&) noexcept = default;
114 ~PolicySnapshot();
115
116 const std::string& id() const noexcept;
117 const std::string& semantic_version() const noexcept;
118 const std::string& owner_scope() const noexcept;
119 const std::string& fingerprint() const noexcept;
120 const std::string& admission_profile_fingerprint() const noexcept;
121 const std::string& registry_fingerprint() const noexcept;
122 std::vector<std::string> allowed_capabilities() const;
123 std::vector<std::string> allowed_effects() const;
124 std::vector<std::string> allowed_module_digests() const;
125 const BudgetLimits& budget_ceiling() const noexcept;
127 ExecutionGuarantee minimum_execution_guarantee() const noexcept;
128 json manifest() const;
129 std::string serialize_canonical() const;
130
131 static PolicySnapshot parse(std::string_view bytes);
132
133private:
134 struct Impl;
135 std::shared_ptr<const Impl> impl_;
136
137 explicit PolicySnapshot(std::shared_ptr<const Impl> impl);
138 friend class PolicySnapshotBuilder;
139};
140
141class NEOGRAPH_PROGRAM_API PolicySnapshotBuilder {
142public:
143 PolicySnapshotBuilder();
144 PolicySnapshotBuilder(PolicySnapshotBuilder&&) noexcept;
145 PolicySnapshotBuilder& operator=(PolicySnapshotBuilder&&) noexcept;
146 PolicySnapshotBuilder(const PolicySnapshotBuilder&) = delete;
147 PolicySnapshotBuilder& operator=(const PolicySnapshotBuilder&) = delete;
148 ~PolicySnapshotBuilder();
149
150 PolicySnapshotBuilder& id(std::string value);
151 PolicySnapshotBuilder& semantic_version(std::string value);
152 PolicySnapshotBuilder& owner_scope(std::string value);
153 PolicySnapshotBuilder& admission_profile(AdmissionProfile value);
154 PolicySnapshotBuilder& allow_capability(std::string value);
155 PolicySnapshotBuilder& allow_effect(std::string value);
156 PolicySnapshotBuilder& allow_module_digest(std::string value);
157 PolicySnapshotBuilder& budget_ceiling(BudgetLimits value);
158
159 PolicySnapshotBuilder& minimum_execution_guarantee(ExecutionGuarantee value);
160 PolicySnapshot build() &&;
161
162private:
163 struct Impl;
164 std::unique_ptr<Impl> impl_;
165};
166
167} // namespace neograph::program
constexpr std::uint32_t DEFAULT_MAX_CHILD_DEPTH
Default grant for a caller that explicitly opts into bounded child execution.
Definition admission.h:20
constexpr std::uint32_t MAX_SUPPORTED_CHILD_DEPTH
Hard upper bound for recursive child grants in one Program lineage.
Definition admission.h:22
Immutable executable registry snapshots for Program admission.
Deeply owned, immutable Program source values.