NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
run_record.h
Go to the documentation of this file.
1
5#pragma once
6
7#include <neograph/api.h>
13
14#include <vector>
15#include <cstdint>
16#include <memory>
17#include <optional>
18#include <string>
19#include <string_view>
20
21namespace neograph::program {
22
23struct ProgramPersistedInvocation {
24 json input = json::object();
25 RunBudget granted_budget;
26 std::string trace_id;
27 std::string parent_run_id;
28 std::uint32_t child_depth = 0;
29
30 NEOGRAPH_PROGRAM_API bool operator==(const ProgramPersistedInvocation&) const;
31};
32
40 std::string checkpoint_id;
41 json value;
42
43 NEOGRAPH_PROGRAM_API bool operator==(const ProgramAttemptResume&) const;
44};
45
46enum class ProgramChildState : std::uint8_t {
47 Publishing,
48 Dispatched,
49 Completed,
50 Cancelled,
51 Failed,
52};
53
54NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramChildState state) noexcept;
55NEOGRAPH_PROGRAM_API ProgramChildState program_child_state_from_string(std::string_view value);
56
57struct ProgramChildRecord {
58 std::string child_run_id;
59 std::string link_id;
60 std::string link_receipt;
61 ProgramPersistedInvocation invocation;
62 ProgramChildState state = ProgramChildState::Publishing;
64 std::optional<ProgramResult> terminal_result;
66 std::uint64_t terminal_generation = 0;
67
68 NEOGRAPH_PROGRAM_API bool operator==(const ProgramChildRecord&) const;
69};
70
71struct ProgramRunRecordData {
72 std::string owner_scope;
73 std::string run_id;
74 std::string program_version_id;
75 std::string bundle_id;
76 std::string binding_fingerprint;
77 RunInvocation invocation;
79 std::uint32_t child_depth = 0;
80 ProgramContinuation continuation;
81 RunBudget remaining_budget;
82 std::optional<CoreCheckpointIdentity> exact_checkpoint;
83 std::optional<std::string> exact_checkpoint_content_id;
84 std::optional<ProgramPendingInput> pending_input;
85 std::optional<ProgramPendingEffect> pending_effect;
86 std::optional<ProgramResult> terminal_result;
87 std::optional<ForkCompatibilityReceipt> fork_receipt;
88 std::vector<ProgramChildRecord> children;
89 std::string journal_head;
90 std::optional<std::string> fork_source_run_id;
91 std::optional<std::string> fork_source_program_version_id;
92 std::optional<std::string> fork_source_checkpoint_id;
93 std::optional<std::string> recorded_binding_set_fingerprint;
94 std::uint64_t event_sequence = 0;
95 std::uint64_t effect_sequence = 0;
96 std::int64_t created_at_ms = 0;
97 std::int64_t updated_at_ms = 0;
99 std::string logical_run_id;
101 std::optional<ProgramAttemptResume> attempt_resume;
115 std::optional<json> settled_branches;
116};
117
119class NEOGRAPH_PROGRAM_API ProgramRunRecord {
120public:
123 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 6;
124
125 static ProgramRunRecord create(ProgramRunRecordData data);
126 static ProgramRunRecord parse(std::string_view stored_bytes);
127
128 const std::string& owner_scope() const noexcept;
129 const std::string& run_id() const noexcept;
130 const std::string& logical_run_id() const noexcept;
131 const std::string& program_version_id() const noexcept;
132 const std::string& bundle_id() const noexcept;
133 const std::string& binding_fingerprint() const noexcept;
134 const RunInvocation& invocation() const noexcept;
135 std::uint32_t child_depth() const noexcept;
136 ProgramContinuation continuation() const noexcept;
137 RunBudget remaining_budget() const noexcept;
138 std::optional<CoreCheckpointIdentity> exact_checkpoint() const;
139 const std::optional<std::string>& exact_checkpoint_content_id() const noexcept;
140 const std::optional<ProgramAttemptResume>& attempt_resume() const noexcept;
141 std::optional<json> settled_branches() const;
142 std::optional<ProgramPendingInput> pending_input() const;
143 std::optional<ProgramPendingEffect> pending_effect() const;
144 std::optional<ProgramResult> terminal_result() const;
145 bool has_children() const noexcept;
146 std::vector<ProgramChildRecord> children() const;
147 std::optional<ForkCompatibilityReceipt> fork_receipt() const;
148 const std::string& journal_head() const noexcept;
149 std::uint64_t event_sequence() const noexcept;
150 std::uint64_t effect_sequence() const noexcept;
151 std::int64_t created_at_ms() const noexcept;
152 std::int64_t updated_at_ms() const noexcept;
153 const std::string& id() const noexcept;
154
155 std::optional<std::string> fork_source_run_id() const;
156 std::optional<std::string> fork_source_program_version_id() const;
157 std::optional<std::string> fork_source_checkpoint_id() const;
158 std::optional<std::string> recorded_binding_set_fingerprint() const;
159 std::string serialize_canonical() const;
160
161private:
162 struct Impl;
163 explicit ProgramRunRecord(std::shared_ptr<const Impl> impl);
164 std::shared_ptr<const Impl> impl_;
165 // Runtime-only typed custody overlay; canonical identity stays unchanged.
166 std::optional<ProgramResult> hydrated_terminal_;
167 ProgramRunRecord with_hydrated_terminal(ProgramResult result) const;
168 friend class detail::RunControl;
169};
170
171} // namespace neograph::program
NEOGRAPH_API export/import macro for shared-library builds.
Canonical immutable compatibility receipt stored with target-run lineage.
Definition fork.h:110
Immutable durable external-effect state.
Definition pending.h:160
Immutable pending host input/capability result.
Definition pending.h:108
Deep-owned, content-addressed run snapshot used for reconnect and CAS publication.
Definition run_record.h:119
Exact-checkpoint Program fork compatibility values.
Atomic, content-addressed Program continuation journal.
Protocol-neutral durable pending input and effect values.
Transport-neutral, owner-scoped Program invocation contracts.
Immutable outcome of one Program run attempt.
The value with which a running attempt resumes its exact checkpoint: the resume or reconciliation val...
Definition run_record.h:39
One owner-scoped Program request.
Definition invocation.h:115