44 std::uint32_t schema_version = 2;
46 std::string sender_owner_scope;
47 std::string receiver_owner_scope;
48 std::string sender_agent_id;
49 std::string receiver_agent_id;
50 std::string task_scope;
51 std::vector<std::string> capability_allowlist;
52 std::vector<std::string> effect_allowlist;
53 std::vector<std::string> artifact_allowlist;
54 std::vector<std::string> cancellation_rights;
57 std::uint64_t expires_at_unix_ms = 0;
58 std::uint32_t max_retries = 0;
59 std::uint64_t acknowledgement_timeout_ms = 1;
67 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
72 CollaborationLink accept(std::string receiver_agent_id, std::string consent_token)
const;
75 CollaborationLinkState state()
const noexcept;
77 const std::string& consent_fingerprint()
const noexcept;
78 const std::string& content_hash()
const noexcept;
79 bool is_expired(std::uint64_t now_unix_ms)
const noexcept;
80 bool permits_capability(std::string_view capability)
const noexcept;
81 bool permits_effect(std::string_view effect)
const noexcept;
82 bool permits_artifact(std::string_view artifact_identity)
const noexcept;
83 bool permits_message_kind(std::string_view kind)
const noexcept;
84 bool permits_cancellation(std::string_view actor_agent_id)
const noexcept;
85 std::string serialize_canonical()
const;
90 std::shared_ptr<const Impl> impl_;
108 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 1;
111 std::string sender_owner_scope;
112 std::string receiver_owner_scope;
113 std::string sender_agent_id;
114 std::string receiver_agent_id;
115 std::string sender_program_run_id;
116 std::string receiver_program_run_id;
119 std::string a2a_task_id;
120 std::string a2a_context_id;
121 std::string message_id;
122 std::string correlation_id;
123 std::uint64_t sequence = 0;
125 std::string idempotency_key;
126 json payload = json::object();
127 std::vector<CollaborationArtifactReference> artifacts;
130 std::string sender_program_run_id,
131 std::string receiver_program_run_id,
132 std::string a2a_task_id,
133 std::string a2a_context_id,
134 std::string message_id,
135 std::string correlation_id,
136 std::uint64_t sequence,
138 std::string idempotency_key,
139 json payload = json::object(),
140 std::vector<CollaborationArtifactReference> artifacts = {});
142#ifdef NEOGRAPH_A2A_PROGRAM
147 const program::ProgramVersion& version);
151 std::string serialize_canonical()
const;
152 std::string content_hash()
const;
153 bool is_terminal() const noexcept;
230class NEOGRAPH_API CollaborationMailbox final {
232 static constexpr std::uint32_t STORAGE_SCHEMA_VERSION = 2;
234 CollaborationMailbox(std::string owner_scope, std::string agent_id);
235 CollaborationMailbox(CollaborationMailbox&&) noexcept;
236 CollaborationMailbox& operator=(CollaborationMailbox&&) noexcept;
237 CollaborationMailbox(const CollaborationMailbox&) = delete;
238 CollaborationMailbox& operator=(const CollaborationMailbox&) = delete;
239 ~CollaborationMailbox();
241 static CollaborationMailbox parse(std::string_view stored_bytes);
243 const std::string& owner_scope() const noexcept;
244 const std::string& agent_id() const noexcept;
247 void accept_link(CollaborationLink link, std::string consent_token);
248 void revoke_link(std::string_view link_id, std::string actor_agent_id);
250 CollaborationSubmitResult submit(CollaborationEnvelope envelope);
251#ifdef NEOGRAPH_A2A_PROGRAM
252 CollaborationSubmitResult submit_program(CollaborationEnvelope envelope,
253 program::ProgramVersion version,
254 program::RunInvocation invocation);
256 CollaborationSubmitResult submit(CollaborationEnvelope envelope,
257 program::ProgramVersion version,
258 program::RunInvocation invocation);
259 std::optional<CollaborationRecord::ProgramRequest>
260 get_program_request(std::string_view idempotency_key) const;
262 bool acknowledge(std::string_view idempotency_key);
263 bool cancel(std::string_view link_id,
264 std::string_view correlation_id,
265 std::string_view actor_agent_id);
268 std::optional<CollaborationRecord> get(std::string_view idempotency_key) const;
273 bool authenticates_sender(std::string_view link_id,
274 const CollaborationPeerIdentity& peer) const;
281 CollaborationTaskAuthorization authorize_task(
282 std::string_view receiver_program_run_id,
283 const CollaborationPeerIdentity& peer,
284 bool require_cancellation = false) const;
286 std::vector<CollaborationRecord> snapshot() const;
289 bool permits_artifact(std::string_view link_id,
290 std::string_view artifact_identity) const;
291 std::string serialize_canonical() const;
295 explicit CollaborationMailbox(std::shared_ptr<Impl> impl);
296 std::shared_ptr<Impl> impl_;