|
NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
|
Explicit provider interposition for runtimes that have admitted context. More...
#include <runtime_interposition_controller.h>
Public Member Functions | |
| void | activate (std::string owner_id, ContextEpoch epoch) |
| Select the immutable context generation used by subsequent dispatches. | |
| asio::awaitable< sp::runtime::Result > | invoke_async (ProviderRequest request, std::vector< sp::Message > host_instructions={}, std::vector< sp::Message > trusted_supplemental={}, graph::ProviderCallIdentity identity={}) |
| Assemble, journal, and dispatch. | |
| void | set_hook_runtime (std::shared_ptr< HookRuntime > hooks) |
| Additive host resource; absent preserves legacy dispatch behavior. | |
Explicit provider interposition for runtimes that have admitted context.
Direct Provider use remains outside this boundary by design.
Definition at line 20 of file runtime_interposition_controller.h.
| void neograph::RuntimeInterpositionController::activate | ( | std::string | owner_id, |
| ContextEpoch | epoch | ||
| ) |
Select the immutable context generation used by subsequent dispatches.
An epoch that claims to extend its predecessor is verified first (verify_context_epoch_claim). The predecessor is the one given, or else the epoch active for this owner when its id is the epoch's predecessor_id. A claim without a predecessor of either kind, or one that does not hold, is refused with ContextStabilityError and the active epoch stays as it was. An epoch that claims nothing, or that breaks, is activated as before.
| asio::awaitable< sp::runtime::Result > neograph::RuntimeInterpositionController::invoke_async | ( | ProviderRequest | request, |
| std::vector< sp::Message > | host_instructions = {}, |
||
| std::vector< sp::Message > | trusted_supplemental = {}, |
||
| graph::ProviderCallIdentity | identity = {} |
||
| ) |
Assemble, journal, and dispatch.
Active epoch history is authoritative.
Host-stepped: the prompt comes from the epoch's fixed RAW range, so the host appends RAW records and activates a new epoch for every provider call. A call that presents assistant or tool messages added since the epoch's first dispatch (a graph or agent loop that advanced inside one run) throws std::logic_error naming this contract. The same presented messages again (a retry of the turn) are accepted; activate() and clear() forget what was presented.