17namespace neograph::program {
19enum class ProgramPendingInputKind : std::uint8_t {
24enum class ProgramPendingState : std::uint8_t {
32enum class ProgramEffectIdempotency : std::uint8_t {
37enum class ProgramEffectReconciliation : std::uint8_t {
56struct ProgramPendingInputData {
57 std::string operation_id;
59 ProgramPendingInputKind kind = ProgramPendingInputKind::Input;
60 json result_schema = json::object();
61 json payload = json::object();
62 std::optional<std::uint64_t> expires_at_unix_ms;
63 std::string core_node;
64 json core_interrupt_value;
65 ProgramPendingState state = ProgramPendingState::Awaiting;
66 std::optional<json> consumed_result;
72 std::string core_interrupt_id;
74 bool operator==(
const ProgramPendingInputData&)
const =
default;
77struct ProgramPendingEffectData {
78 std::string operation_id;
80 std::string effect_id;
81 json result_schema = json::object();
82 json payload = json::object();
83 std::optional<std::uint64_t> expires_at_unix_ms;
84 EffectMode effect_mode = EffectMode::Brokered;
85 ProgramEffectIdempotency idempotency = ProgramEffectIdempotency::Idempotent;
86 std::string core_node;
87 json core_interrupt_value;
88 ProgramPendingState state = ProgramPendingState::Awaiting;
89 ProgramEffectReconciliation reconciliation = ProgramEffectReconciliation::None;
90 std::optional<json> reconciled_result;
92 std::string core_interrupt_id;
94 bool operator==(
const ProgramPendingEffectData&)
const =
default;
97class ProgramPendingInput;
98class ProgramPendingEffect;
99struct ProgramPendingInputUpdate;
100struct ProgramPendingEffectUpdate;
112 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
117 const std::string& operation_id() const noexcept;
118 const std::
string& call_id() const noexcept;
119 ProgramPendingInputKind kind() const noexcept;
120 json result_schema() const;
121 json payload() const;
122 std::optional<std::uint64_t> expires_at_unix_ms() const noexcept;
123 const std::
string& core_node() const noexcept;
124 json core_interrupt_value() const;
125 const std::
string& core_interrupt_id() const noexcept;
126 ProgramPendingState state() const noexcept;
127 std::optional<json> consumed_result() const;
129 ProgramPendingInputUpdate submit(std::string_view call_id,
131 std::uint64_t now_unix_ms) const;
132 ProgramPendingInputUpdate expire(std::uint64_t now_unix_ms) const;
133 ProgramPendingInputUpdate cancel() const;
135 std::
string serialize_canonical() const;
141 std::shared_ptr<const Impl> impl_;
144struct ProgramPendingInputUpdate {
147 std::string diagnostic_code;
150 bool state_changed() const noexcept;
163 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
168 const std::string& operation_id() const noexcept;
169 const std::
string& call_id() const noexcept;
170 const std::
string& effect_id() const noexcept;
171 json result_schema() const;
172 json payload() const;
173 std::optional<std::uint64_t> expires_at_unix_ms() const noexcept;
174 EffectMode effect_mode() const noexcept;
175 ProgramEffectIdempotency idempotency() const noexcept;
176 const std::
string& core_node() const noexcept;
177 json core_interrupt_value() const;
178 const std::
string& core_interrupt_id() const noexcept;
179 ProgramPendingState state() const noexcept;
180 ProgramEffectReconciliation reconciliation() const noexcept;
181 std::optional<json> reconciled_result() const;
182 ProgramPendingEffectUpdate submit(std::string_view call_id,
183 std::string_view effect_id,
185 std::uint64_t now_unix_ms) const;
187 ProgramPendingEffectUpdate mark_outcome_unknown(std::uint64_t now_unix_ms) const;
188 ProgramPendingEffectUpdate reconcile(std::string_view call_id,
189 std::string_view effect_id,
190 ProgramEffectReconciliation resolution,
191 std::optional<json> result,
192 std::uint64_t now_unix_ms) const;
193 ProgramPendingEffectUpdate expire(std::uint64_t now_unix_ms) const;
194 ProgramPendingEffectUpdate cancel() const;
196 std::
string serialize_canonical() const;
202 std::shared_ptr<const Impl> impl_;
205struct ProgramPendingEffectUpdate {
208 std::string diagnostic_code;
211 bool state_changed() const noexcept;
214NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramPendingInputKind value) noexcept;
215NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramPendingState value) noexcept;
216NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramEffectIdempotency value) noexcept;
217NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramEffectReconciliation value) noexcept;
@ Cancelled
"cancelled" — cancelled via session/cancel.
NEOGRAPH_API export/import macro for shared-library builds.
Immutable durable external-effect state.
Thin C++ RAII wrapper around yyjson with nlohmann-compatible API.
ProgramPendingDisposition
Stable result of applying one pending-value transition.
Immutable executable registry snapshots for Program admission.