16namespace neograph::program {
18inline constexpr std::string_view TRUSTED_NATIVE_CAPABILITY =
"neograph.native.trusted";
24enum class AdmissionMode : std::uint8_t {
29NEOGRAPH_PROGRAM_API std::string_view to_string(AdmissionMode mode)
noexcept;
30NEOGRAPH_PROGRAM_API AdmissionMode admission_mode_from_string(std::string_view value);
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;
43 bool operator==(
const BudgetLimits&)
const =
default;
46class NEOGRAPH_PROGRAM_API AdmissionProfile {
48 AdmissionProfile(
const AdmissionProfile&)
noexcept =
default;
49 AdmissionProfile(AdmissionProfile&&) noexcept = default;
50 AdmissionProfile& operator=(const AdmissionProfile&) noexcept = default;
51 AdmissionProfile& operator=(AdmissionProfile&&) noexcept = default;
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;
69 static AdmissionProfile parse(std::string_view bytes);
73 std::shared_ptr<const Impl> impl_;
75 explicit AdmissionProfile(std::shared_ptr<const Impl> impl);
76 friend class AdmissionProfileBuilder;
77 friend class PolicySnapshotBuilder;
80class NEOGRAPH_PROGRAM_API AdmissionProfileBuilder {
82 AdmissionProfileBuilder();
83 AdmissionProfileBuilder(AdmissionProfileBuilder&&) noexcept;
84 AdmissionProfileBuilder& operator=(AdmissionProfileBuilder&&) noexcept;
85 AdmissionProfileBuilder(const AdmissionProfileBuilder&) = delete;
86 AdmissionProfileBuilder& operator=(const AdmissionProfileBuilder&) = delete;
87 ~AdmissionProfileBuilder();
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);
100 AdmissionProfile build() &&;
104 friend class AdmissionProfile;
105 std::unique_ptr<Impl> impl_;
108class NEOGRAPH_PROGRAM_API PolicySnapshot {
110 PolicySnapshot(
const PolicySnapshot&)
noexcept =
default;
111 PolicySnapshot(PolicySnapshot&&) noexcept = default;
112 PolicySnapshot& operator=(const PolicySnapshot&) noexcept = default;
113 PolicySnapshot& operator=(PolicySnapshot&&) noexcept = default;
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;
131 static PolicySnapshot parse(std::string_view bytes);
135 std::shared_ptr<const Impl> impl_;
137 explicit PolicySnapshot(std::shared_ptr<const Impl> impl);
138 friend class PolicySnapshotBuilder;
141class NEOGRAPH_PROGRAM_API PolicySnapshotBuilder {
143 PolicySnapshotBuilder();
144 PolicySnapshotBuilder(PolicySnapshotBuilder&&) noexcept;
145 PolicySnapshotBuilder& operator=(PolicySnapshotBuilder&&) noexcept;
146 PolicySnapshotBuilder(const PolicySnapshotBuilder&) = delete;
147 PolicySnapshotBuilder& operator=(const PolicySnapshotBuilder&) = delete;
148 ~PolicySnapshotBuilder();
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);
159 PolicySnapshotBuilder& minimum_execution_guarantee(ExecutionGuarantee value);
160 PolicySnapshot build() &&;
164 std::unique_ptr<Impl> impl_;
constexpr std::uint32_t DEFAULT_MAX_CHILD_DEPTH
Default grant for a caller that explicitly opts into bounded child execution.
constexpr std::uint32_t MAX_SUPPORTED_CHILD_DEPTH
Hard upper bound for recursive child grants in one Program lineage.
Immutable executable registry snapshots for Program admission.
Deeply owned, immutable Program source values.