NeoGraph 0.16.0
A C++20 Graph Agent Engine Library — LangGraph for C++
Loading...
Searching...
No Matches
program_adapter.h
Go to the documentation of this file.
1
10#pragma once
11
12#include <neograph/api.h>
14#include <neograph/a2a/types.h>
16
17#include <functional>
18#include <memory>
19#include <optional>
20#include <stdexcept>
21#include <string>
22#include <string_view>
23#include <vector>
24
25namespace neograph::a2a {
26
28class NEOGRAPH_API ProgramA2ARequestError final : public std::runtime_error {
29public:
30 explicit ProgramA2ARequestError(std::string message)
31 : std::runtime_error(std::move(message)) {}
32};
33
41class NEOGRAPH_API ProgramAgentAdapter final {
42public:
43 using InvocationBuilder = std::function<program::RunInvocation(
44 const Message&, std::string_view task_id, std::string_view context_id)>;
45 using ArtifactBuilder = std::function<std::optional<Artifact>(
46 const program::ProgramResult&, std::string_view task_id)>;
47 using HostMessageHandler = std::function<std::optional<Task>(
48 const Message&, std::string_view task_id, std::string_view context_id,
49 const std::optional<CollaborationPeerIdentity>& authenticated_peer)>;
50
51 ProgramAgentAdapter(std::shared_ptr<program::ProgramRuntime> runtime,
52 program::ProgramVersion version,
53 std::string owner_scope,
54 std::shared_ptr<CollaborationMailbox> mailbox = {},
55 InvocationBuilder invocation_builder = {},
56 ArtifactBuilder artifact_builder = {},
57 HostMessageHandler host_message_handler = {});
58
59 const std::string& owner_scope() const noexcept;
60 const program::ProgramVersion& version() const noexcept;
61 const std::shared_ptr<program::ProgramRuntime>& runtime() const noexcept;
62 const std::shared_ptr<CollaborationMailbox>& mailbox() const noexcept;
63 std::optional<Task> handle_host_message(
64 const Message& inbound, std::string_view task_id,
65 std::string_view context_id,
66 const std::optional<CollaborationPeerIdentity>& authenticated_peer) const;
67
71 program::ProgramHandle start(const Message& inbound,
72 std::string_view task_id,
73 std::string_view context_id) const;
74
84 std::vector<program::ProgramHandle> recover_pending() const;
85
87 program::ProgramHandle reconnect(std::string_view task_id) const;
88
92 Task task_snapshot(const program::ProgramHandle& handle,
93 std::string_view task_id,
94 std::string_view context_id) const;
95
98 Task reconnect_task(std::string_view task_id,
99 std::string_view context_id = {}) const;
100
102 void acknowledge_task(std::string_view task_id) const;
103
104private:
108 program::ProgramHandle recover_record(const CollaborationRecord& record) const;
109 std::shared_ptr<program::ProgramRuntime> runtime_;
110 program::ProgramVersion version_;
111 std::string owner_scope_;
112 std::shared_ptr<CollaborationMailbox> mailbox_;
113 InvocationBuilder invocation_builder_;
114 ArtifactBuilder artifact_builder_;
115 HostMessageHandler host_message_handler_;
116};
117
120
121} // namespace neograph::a2a
Core data types for the Agent-to-Agent (A2A) protocol.
NEOGRAPH_API export/import macro for shared-library builds.
Authentication/attenuation failure while admitting a Program-backed A2A request.
One admitted ProgramVersion exposed through A2A.
void acknowledge_task(std::string_view task_id) const
A terminal projection acknowledges the accepted mailbox record, if any.
Task task_snapshot(const program::ProgramHandle &handle, std::string_view task_id, std::string_view context_id) const
Project a live or terminal Program handle into an A2A Task.
std::vector< program::ProgramHandle > recover_pending() const
Recover accepted, typed mailbox requests for this exact ProgramVersion.
Task reconnect_task(std::string_view task_id, std::string_view context_id={}) const
Reconnect and immediately project a durable run.
program::ProgramHandle reconnect(std::string_view task_id) const
Reconnect a run from the ProgramTransitionStore without replaying input.
program::ProgramHandle start(const Message &inbound, std::string_view task_id, std::string_view context_id) const
Admit and start one request through the existing ProgramRuntime.
Program-owned collaboration envelopes carried by A2A.
Execution service for admitted immutable Programs.
A single conversational turn (spec §6.4).
Definition types.h:89
A unit of work tracked by the agent (spec §6.1).
Definition types.h:118
One owner-scoped Program request.
Definition invocation.h:115