NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
version.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 <utility>
15#include <vector>
16
17namespace neograph::program {
18
19struct DependencyReceipt {
20 std::string dependency_id;
21 std::string content_identity;
22
23 bool operator==(const DependencyReceipt&) const = default;
24};
25
26struct CapabilityBindingReceipt {
27 ExecutableIdentity executable;
28 std::string binding_identity;
29
30 bool operator==(const CapabilityBindingReceipt&) const = default;
31};
32
33NEOGRAPH_PROGRAM_API std::string capability_binding_receipt_root(
34 std::vector<CapabilityBindingReceipt> receipts);
35
36struct CoreMaterializationReceipt {
37 std::string compiler_build_id;
38 std::string registry_snapshot_fingerprint;
40 std::vector<CorePlanIdentity> plans;
42 std::vector<CapabilityBindingReceipt> capability_bindings;
43
44 bool operator==(const CoreMaterializationReceipt&) const = default;
45};
46
52 ProgramVersionData(std::string bundle,
53 AdmissionProfile admission,
54 PolicySnapshot policy,
55 std::vector<DependencyReceipt> dependencies,
56 std::string owner,
57 CoreMaterializationReceipt materialization,
58 ExecutionGuarantee guarantee = ExecutionGuarantee::Strict)
59 : bundle_id(std::move(bundle)),
60 admission_profile(std::move(admission)),
61 policy_snapshot(std::move(policy)),
62 dependency_receipts(std::move(dependencies)),
63 ownership_scope(std::move(owner)),
64 core_materialization_receipt(std::move(materialization)),
65 execution_guarantee(guarantee) {}
66
67 std::string bundle_id;
68 AdmissionProfile admission_profile;
69 PolicySnapshot policy_snapshot;
70 std::vector<DependencyReceipt> dependency_receipts;
71 std::string ownership_scope;
72 CoreMaterializationReceipt core_materialization_receipt;
74 ExecutionGuarantee execution_guarantee = ExecutionGuarantee::Strict;
75};
76
77class NEOGRAPH_PROGRAM_API ProgramVersion {
78public:
79 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 1;
80
81 explicit ProgramVersion(ProgramVersionData data);
82 static ProgramVersion parse(std::string_view stored_bytes);
83
84 const std::string& id() const noexcept;
85 const std::string& bundle_id() const noexcept;
86 AdmissionProfile admission_profile() const;
87 PolicySnapshot policy_snapshot() const;
88 const std::vector<DependencyReceipt>& dependency_receipts() const noexcept;
89 const std::string& ownership_scope() const noexcept;
90 const CoreMaterializationReceipt& core_materialization_receipt() const noexcept;
91 ExecutionGuarantee execution_guarantee() const noexcept;
92 std::string serialize_canonical() const;
93
94private:
95 struct Impl;
96 explicit ProgramVersion(std::shared_ptr<const Impl> impl);
97 std::shared_ptr<const Impl> impl_;
98};
99
100} // namespace neograph::program
Immutable Program admission and policy snapshots.
Immutable, content-addressed Program compilation artifacts.
ExecutionGuarantee
The lowest recoverability/integrity class reachable through an executable closure.
Definition bundle.h:29
Mutable construction input.
Definition version.h:51
ExecutionGuarantee execution_guarantee
Effective floor after the admitted child closure is included.
Definition version.h:74