NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
event.h
Go to the documentation of this file.
1
5#pragma once
6
7#include <neograph/api.h>
10
11#include <cstdint>
12#include <memory>
13#include <string>
14#include <string_view>
15#include <variant>
16
17namespace neograph::program {
18
19enum class ProgramEventKind : std::uint8_t {
20 Started,
21 Core,
22 Emit,
23 CheckpointPublished,
24 Terminal,
25 OperationStarted,
26};
27
28NEOGRAPH_PROGRAM_API std::string_view to_string(ProgramEventKind kind) noexcept;
29NEOGRAPH_PROGRAM_API ProgramEventKind program_event_kind_from_string(std::string_view value);
30
31struct ProgramStartedEvent {
32 RunBudget budget;
33 bool operator==(const ProgramStartedEvent&) const = default;
34};
35
36struct ProgramEmitEvent {
37 std::string operation_id;
38 json value;
39 bool operator==(const ProgramEmitEvent&) const = default;
40};
41
42struct ProgramCheckpointEvent {
43 CoreCheckpointIdentity checkpoint;
44 bool operator==(const ProgramCheckpointEvent&) const = default;
45};
46
47struct ProgramTerminalEvent {
48 ProgramTerminalStatus status;
49 bool operator==(const ProgramTerminalEvent&) const = default;
50};
51
54 std::string operation_kind;
55 std::string input_digest;
56 bool operator==(const ProgramOperationEvent&) const = default;
57};
58
59using ProgramEventPayload = std::variant<ProgramStartedEvent,
60 graph::TypedGraphEvent,
61 ProgramEmitEvent,
62 ProgramCheckpointEvent,
63 ProgramTerminalEvent,
65
66struct NEOGRAPH_PROGRAM_API ProgramEvent {
67 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
68
69 std::string id;
70 std::uint64_t sequence;
71 std::int64_t timestamp_ms;
72 std::string run_id;
73 std::string program_version_id;
74 std::string bundle_id;
75 std::string operation_id;
76 std::string core_generation_id;
77 std::string core_run_id;
78 std::string trace_id;
79 std::uint64_t attempt;
80 ProgramEventKind kind;
81 ProgramEventPayload payload;
82 static ProgramEvent create(ProgramEvent value);
83 static ProgramEvent parse(std::string_view stored_bytes);
84 std::string serialize_canonical() const;
85};
86
87class NEOGRAPH_PROGRAM_API ProgramEventSink {
88public:
89 virtual ~ProgramEventSink() = default;
90 virtual void on_event(const ProgramEvent& event) = 0;
91};
92
93} // namespace neograph::program
NEOGRAPH_API export/import macro for shared-library builds.
Graph engine type definitions: channels, edges, nodes, events, and control flow.
Immutable outcome of one Program run attempt.
Compiled-runtime operation coordinate, never a user ng.emit permission.
Definition event.h:53