Skip to main content

laser_wire/
codes.rs

1// Managed command codes LaserData Cloud reserves. Upstream Apache Iggy uses low
2// codes (1..=605), so LaserData reserves everything from one million up and the
3// two never collide. Within that, each feature owns a 100-wide block:
4//
5//   1_000_000..=1_000_099  internal commands (capability probe, backend hello, client metadata, batch)
6//   1_000_100..=1_000_199  authorization & system management (whoami, roles, bindings) [first management band]
7//   1_000_200..=1_000_299  query family (query, projection/schema browse)
8//   1_000_300..=1_000_399  key-value store
9//   1_000_400..=1_000_499  forks (experimental)
10//   1_000_500..=1_000_599  agentic memory (reserved facade: remember/recall/improve/forget)
11//   1_000_600..=1_000_699  knowledge graph (traverse, neighbors, upsert)
12//   1_000_700..=1_000_799  agent and workflow control (submit/cancel/status/list)
13//   1_000_800..=1_000_899  delivery: consumer filters (filtered reads and their catalog)
14//
15// A query is a non-replicated read, so it is served off the log via these
16// managed commands instead of a topic round-trip. Raw Apache Iggy rejects them
17// with `InvalidCommand`. The values are a pinned wire contract, enforced by
18// the constants test.
19
20/// Base of LaserData's reserved managed-command range.
21pub const AGDX_COMMAND_BASE: u32 = 1_000_000;
22// Capability probe (internal block): LaserData Cloud answers it,
23// raw Apache Iggy rejects it.
24/// Managed command code: capability probe.
25pub const AGDX_HELLO_CODE: u32 = AGDX_COMMAND_BASE;
26/// Internal command code: the managed backend announces its served capabilities
27/// (an `OpVersions`) to the streaming server over their private socket on connect. The
28/// streaming server caches it and answers the client `AGDX_HELLO` with it, so the binary
29/// feature bits and the HTTP capability flags cannot drift from what the backend
30/// actually serves (the backend is the single source of its own truth). Not a
31/// client-facing code, a client never sends it.
32pub const AGDX_BACKEND_HELLO_CODE: u32 = AGDX_COMMAND_BASE + 1;
33/// Fork-native command code: set this connection's advertised metadata (the
34/// transport-level discovery primitive). Handled by the streaming server itself,
35/// not forwarded to the managed backend, because it touches per-connection session state the
36/// backend never sees. Connection-scoped and cleared on disconnect.
37pub const AGDX_SET_CLIENT_METADATA_CODE: u32 = AGDX_COMMAND_BASE + 2;
38/// Fork-native command code: list every connection with its advertised metadata.
39/// The discovery read, answered by the streaming server from its connection table.
40/// A LaserData-owned reply ([`crate::clients::ClientMetadataList`]), never the
41/// upstream Apache Iggy `get_clients` shape, so an Apache Iggy SDK against LaserData
42/// Cloud and the metadata read stay byte-independent.
43pub const AGDX_GET_CLIENTS_METADATA_CODE: u32 = AGDX_COMMAND_BASE + 3;
44/// Managed command code: the mixed-operation batch. The request body is a CBOR
45/// [`BatchRequest`](crate::batch::BatchRequest) carrying up to
46/// [`MAX_BATCH_OPS`](crate::limits::MAX_BATCH_OPS) managed requests, each with
47/// its own code and payload. The reply a [`BatchReply`](crate::batch::BatchReply)
48/// with each op's own reply bytes in order. One round trip amortized over
49/// several ops, per-op results, explicitly NOT atomic. A nested batch is
50/// rejected. An old backend answers the unknown code with `CommandError`,
51/// decoded client-side as the typed unsupported, so no capability bit is
52/// needed.
53pub const AGDX_BATCH_CODE: u32 = AGDX_COMMAND_BASE + 20;
54/// Managed command code: submit one public checkpoint mutation to the managed backend.
55pub const AGDX_CHECKPOINT_CODE: u32 = AGDX_COMMAND_BASE + 21;
56/// Fork-native command code: read one destination and its checkpoint status.
57pub const AGDX_DESTINATION_GET_CODE: u32 = AGDX_COMMAND_BASE + 22;
58/// Fork-native command code: list destinations and their checkpoint status.
59pub const AGDX_DESTINATION_LIST_CODE: u32 = AGDX_COMMAND_BASE + 23;
60/// Fork-native command code: list explicit query-route declarations.
61pub const AGDX_QUERY_ROUTE_LIST_CODE: u32 = AGDX_COMMAND_BASE + 24;
62/// Internal carriage for the closed destination HTTP operation set.
63pub const AGDX_DESTINATION_HTTP_CODE: u32 = AGDX_COMMAND_BASE + 25;
64
65// Authorization and system-management band (1_000_100..=1_000_199). Handled by
66// the streaming server itself. Reads +0..+3, writes +4..+6, history +7.
67/// Base of the authorization and system-management band (first management band).
68pub const AGDX_AUTHZ_BASE: u32 = AGDX_COMMAND_BASE + 100;
69/// Managed command code: read the caller's own effective capabilities (self-read).
70pub const AGDX_AUTHZ_WHOAMI_CODE: u32 = AGDX_AUTHZ_BASE;
71/// Managed command code: list defined roles (optionally filtered).
72pub const AGDX_AUTHZ_LIST_ROLES_CODE: u32 = AGDX_AUTHZ_BASE + 1;
73/// Managed command code: read one role by name.
74pub const AGDX_AUTHZ_GET_ROLE_CODE: u32 = AGDX_AUTHZ_BASE + 2;
75/// Managed command code: read one user's bound role names.
76pub const AGDX_AUTHZ_GET_BINDINGS_CODE: u32 = AGDX_AUTHZ_BASE + 3;
77/// Managed command code: define or replace a role (upsert).
78pub const AGDX_AUTHZ_DEFINE_ROLE_CODE: u32 = AGDX_AUTHZ_BASE + 4;
79/// Managed command code: delete a role by name.
80pub const AGDX_AUTHZ_DELETE_ROLE_CODE: u32 = AGDX_AUTHZ_BASE + 5;
81/// Managed command code: bind roles to a user (replace the user's role set).
82pub const AGDX_AUTHZ_BIND_ROLES_CODE: u32 = AGDX_AUTHZ_BASE + 6;
83/// Managed command code: read the authorization change history (audit).
84pub const AGDX_AUTHZ_HISTORY_CODE: u32 = AGDX_AUTHZ_BASE + 7;
85/// Managed command code: publish one [`crate::control::ControlCommand`] through
86/// the managed backend. The reply is a [`crate::result::CommandError`] whose
87/// `Ok` code means the backend accepted the control-log append. Applying the
88/// command remains asynchronous.
89pub const AGDX_CONTROL_PUBLISH_CODE: u32 = AGDX_AUTHZ_BASE + 8;
90
91// Query family block (1_000_200..=1_000_299). Direct query ops reserve the
92// +0x decade, projection browse the +1x decade, schema browse the +2x decade.
93/// Base of the query managed-command block.
94pub const AGDX_QUERY_BASE: u32 = AGDX_COMMAND_BASE + 200;
95// Execute a `Query`: request body is a CBOR `QueryEnvelope`, reply a CBOR
96// `QueryReply`, off the log over the managed command channel.
97/// Managed command code: execute a query.
98pub const AGDX_QUERY_CODE: u32 = AGDX_QUERY_BASE;
99/// Managed command code: retrieve the next page of an executing query.
100pub const AGDX_QUERY_PAGE_CODE: u32 = AGDX_QUERY_BASE + 1;
101/// Managed command code: cancel an executing query.
102pub const AGDX_QUERY_CANCEL_CODE: u32 = AGDX_QUERY_BASE + 2;
103/// Managed command code: read query execution status.
104pub const AGDX_QUERY_STATUS_CODE: u32 = AGDX_QUERY_BASE + 3;
105// Browse the projection registry (read-only). Get one projection by id (request
106// `GetProjection`) or list them all (request `ListProjections`), reply a CBOR
107// `BrowseReply`.
108/// Managed command code: browse one projection.
109pub const AGDX_GET_PROJECTION_CODE: u32 = AGDX_QUERY_BASE + 10;
110/// Managed command code: list projections.
111pub const AGDX_LIST_PROJECTIONS_CODE: u32 = AGDX_QUERY_BASE + 11;
112/// Managed command code: browse one registered schema by id.
113pub const AGDX_GET_SCHEMA_CODE: u32 = AGDX_QUERY_BASE + 20;
114/// Managed command code: list registered schemas.
115pub const AGDX_LIST_SCHEMAS_CODE: u32 = AGDX_QUERY_BASE + 21;
116/// Managed command code: advisory next free schema id.
117pub const AGDX_REGISTER_SCHEMA_CODE: u32 = AGDX_QUERY_BASE + 22;
118/// Managed command code: decode one payload under a registered schema id.
119pub const AGDX_DECODE_RECORD_CODE: u32 = AGDX_QUERY_BASE + 23;
120
121// Key-value command block (1_000_300..=1_000_399). Each op is its own managed
122// command, forwarded to LaserData Cloud over the same local channel the query path
123// uses, with the authenticated identity stamped in.
124/// Base of the KV managed-command block.
125pub const AGDX_KV_BASE: u32 = AGDX_COMMAND_BASE + 300;
126/// Managed command code: KV get.
127pub const AGDX_KV_GET_CODE: u32 = AGDX_KV_BASE;
128/// Managed command code: KV set.
129pub const AGDX_KV_SET_CODE: u32 = AGDX_KV_BASE + 1;
130/// Managed command code: KV scan.
131pub const AGDX_KV_SCAN_CODE: u32 = AGDX_KV_BASE + 2;
132/// Managed command code: KV delete one.
133pub const AGDX_KV_DELETE_CODE: u32 = AGDX_KV_BASE + 3;
134/// Managed command code: KV bulk delete by filter.
135pub const AGDX_KV_DELETE_MANY_CODE: u32 = AGDX_KV_BASE + 4;
136/// Managed command code: list the caller's namespaces.
137pub const AGDX_KV_NAMESPACES_CODE: u32 = AGDX_KV_BASE + 5;
138/// Managed command code: compare-and-swap a key (optimistic concurrency).
139/// Additive over [`KV_OP_VERSION`] 1: a backend or server that does not serve it
140/// rejects the code, which the client surfaces as an unsupported error. Whether
141/// it is served is advertised by the `kv_cas` capability flag.
142pub const AGDX_KV_CAS_CODE: u32 = AGDX_KV_BASE + 6;
143/// Managed command code: test presence and read metadata without the value
144/// (the formal `EXISTS` object primitive).
145pub const AGDX_KV_EXISTS_CODE: u32 = AGDX_KV_BASE + 7;
146/// Managed command code: set, refresh, or clear a key's expiry in place without
147/// rewriting its value (the formal `EXPIRE` primitive).
148pub const AGDX_KV_EXPIRE_CODE: u32 = AGDX_KV_BASE + 8;
149/// Managed command code: apply a merge patch to a structured value (the formal
150/// `PATCH` primitive).
151pub const AGDX_KV_PATCH_CODE: u32 = AGDX_KV_BASE + 9;
152/// Managed command code: acquire a revocable lease on a key (the formal `LEASE`
153/// primitive). Carries the stable holder identity and an optional delegated
154/// subject at [`KV_LEASE_OP_VERSION`]. Served only by a deployment advertising
155/// the `KV_FENCED_LEASES` feature bit; a backend that cannot serve it returns a
156/// clean unsupported error.
157pub const AGDX_KV_LEASE_CODE: u32 = AGDX_KV_BASE + 10;
158/// Managed command code: release a held lease early (the formal `RELEASE`
159/// primitive). Requires the same holder and the current fence token, validated
160/// against the fence sequence, never the resetting lease-row version.
161pub const AGDX_KV_RELEASE_CODE: u32 = AGDX_KV_BASE + 11;
162/// Managed command code: fenced compare-and-swap. Applies the CAS in one
163/// backend transaction that also requires a live lease at the request's
164/// coordination namespace and key plus a fence sequence equal to the presented
165/// token (the at-most-one effective-writer gate). Rides
166/// [`KV_LEASE_OP_VERSION`]; served only under the `KV_FENCED_LEASES` feature
167/// bit, which subsumes the older fence-only `kv_cas_fenced` flag.
168pub const AGDX_KV_CAS_FENCED_CODE: u32 = AGDX_KV_BASE + 12;
169/// Managed command code: copy the value at one key to another key (possibly in
170/// another namespace) in a single backend transaction. Reuses the kv outcomes:
171/// `Committed` on success, `NotFound` when the source is absent.
172pub const AGDX_KV_COPY_CODE: u32 = AGDX_KV_BASE + 13;
173/// Managed command code: move the value at one key to another key. Copy plus
174/// delete of the source, one backend transaction, the same outcomes.
175pub const AGDX_KV_MOVE_CODE: u32 = AGDX_KV_BASE + 14;
176/// Managed command code: extend a held lease without changing its token (the
177/// formal `RENEW` primitive). Requires the same holder and subject, a live
178/// lease, and the current fence token; never bumps the fence. Rides
179/// [`KV_LEASE_OP_VERSION`] under the `KV_FENCED_LEASES` feature bit.
180pub const AGDX_KV_LEASE_RENEW_CODE: u32 = AGDX_KV_BASE + 15;
181
182// Fork block (1_000_400..): agentic copy-on-write branches of the materialized
183// read model. Each op is its own managed command, forwarded over the same bridge.
184// Experimental: the fork surface is not a native Iggy topic fork and may be
185// superseded by a native shared-log implementation.
186/// Base of the fork managed-command block.
187pub const AGDX_FORK_BASE: u32 = AGDX_COMMAND_BASE + 400;
188/// Managed command code: open a fork.
189pub const AGDX_FORK_CREATE_CODE: u32 = AGDX_FORK_BASE;
190/// Managed command code: squash a fork.
191pub const AGDX_FORK_DELETE_CODE: u32 = AGDX_FORK_BASE + 1;
192/// Managed command code: promote a fork onto the trunk.
193pub const AGDX_FORK_PROMOTE_CODE: u32 = AGDX_FORK_BASE + 2;
194/// Managed command code: list forks.
195pub const AGDX_FORK_LIST_CODE: u32 = AGDX_FORK_BASE + 3;
196/// Managed command code: write a speculative fork row.
197pub const AGDX_FORK_PUT_CODE: u32 = AGDX_FORK_BASE + 4;
198
199// Knowledge graph block (1_000_600..=1_000_699). Traversal reads and the
200// projector's node/edge upsert. Whether they are served is advertised by the
201// `managed_graph` capability flag. Agentic memory is not a wire band of its own:
202// the four-verb memory API is an SDK facade that composes `publish`, the query
203// block, and this graph block, so there is one managed read/write model, not a
204// parallel one.
205/// Base of the graph managed-command block.
206pub const AGDX_GRAPH_BASE: u32 = AGDX_COMMAND_BASE + 600;
207/// Managed command code: run a graph traversal.
208pub const AGDX_GRAPH_QUERY_CODE: u32 = AGDX_GRAPH_BASE;
209/// Managed command code: write nodes and edges (the projector path).
210pub const AGDX_GRAPH_UPSERT_CODE: u32 = AGDX_GRAPH_BASE + 1;
211/// Managed command code: one-hop neighbor read.
212pub const AGDX_GRAPH_NEIGHBORS_CODE: u32 = AGDX_GRAPH_BASE + 2;
213
214// Agent band (1_000_700..=1_000_799). Codes 1_000_700 to 1_000_703 belonged to
215// the retired run registry and are never reused. The session reads start at
216// 1_000_710.
217/// Base of the agent band.
218pub const AGDX_AGENT_BASE: u32 = AGDX_COMMAND_BASE + 700;
219/// Managed command code: read one session summary.
220pub const AGDX_SESSION_GET_CODE: u32 = AGDX_AGENT_BASE + 10;
221/// Managed command code: list sessions in one stream.
222pub const AGDX_SESSION_LIST_CODE: u32 = AGDX_AGENT_BASE + 11;
223/// Managed command code: read a session timeline page.
224pub const AGDX_SESSION_EVENTS_CODE: u32 = AGDX_AGENT_BASE + 12;
225/// Managed command code: read folded session state.
226pub const AGDX_SESSION_STATE_CODE: u32 = AGDX_AGENT_BASE + 13;
227/// Managed command code: read links to derived facts.
228pub const AGDX_SESSION_LINKS_CODE: u32 = AGDX_AGENT_BASE + 14;
229/// Managed command code: read session source positions.
230pub const AGDX_SESSION_SOURCES_CODE: u32 = AGDX_AGENT_BASE + 15;
231/// Managed command code: read committed session changes.
232pub const AGDX_SESSION_CHANGES_CODE: u32 = AGDX_AGENT_BASE + 16;
233
234// Delivery band (1_000_800..=1_000_899). Consumer filters: a reader asks the
235// streaming server for only the records that match a declarative filter.
236// Reads, acknowledgments, previews, sample tests, and validation are served by
237// the streaming server itself (the +0x decade). The catalog of saved filters and
238// their consumer-group bindings lives in LaserData Cloud and is forwarded (the
239// +1x decade). Whether it is served is advertised by the `CONSUMER_FILTERS`
240// feature bit.
241/// Base of the delivery band.
242pub const AGDX_DELIVERY_BASE: u32 = AGDX_COMMAND_BASE + 800;
243/// Server-native command code: read one bounded page of matching records.
244pub const AGDX_FILTERED_POLL_CODE: u32 = AGDX_DELIVERY_BASE;
245/// Server-native command code: acknowledge a filtered page, fenced to the source
246/// generation the page was read from.
247pub const AGDX_FILTERED_ACK_CODE: u32 = AGDX_DELIVERY_BASE + 1;
248/// Server-native command code: preview a filter over stored records without
249/// joining a consumer group or storing an offset.
250pub const AGDX_FILTER_PREVIEW_CODE: u32 = AGDX_DELIVERY_BASE + 2;
251/// Server-native command code: evaluate a filter against one supplied sample.
252pub const AGDX_FILTER_TEST_CODE: u32 = AGDX_DELIVERY_BASE + 3;
253/// Server-native command code: validate and compile a filter, returning its digest.
254pub const AGDX_FILTER_VALIDATE_CODE: u32 = AGDX_DELIVERY_BASE + 4;
255/// Managed command code: one catalog mutation (register, revise, describe,
256/// set_revision_enabled, archive, drop, bind, unbind), with its authoritative outcome.
257pub const AGDX_FILTER_MUTATE_CODE: u32 = AGDX_DELIVERY_BASE + 10;
258/// Managed command code: read one saved filter.
259pub const AGDX_GET_FILTER_CODE: u32 = AGDX_DELIVERY_BASE + 11;
260/// Managed command code: list saved filters.
261pub const AGDX_LIST_FILTERS_CODE: u32 = AGDX_DELIVERY_BASE + 12;
262/// Managed command code: list one filter's immutable revisions.
263pub const AGDX_LIST_FILTER_REVISIONS_CODE: u32 = AGDX_DELIVERY_BASE + 13;
264/// Managed command code: read the filter binding of one consumer group.
265pub const AGDX_GET_FILTER_BINDING_CODE: u32 = AGDX_DELIVERY_BASE + 14;
266/// Managed command code: list consumer-group filter bindings.
267pub const AGDX_LIST_FILTER_BINDINGS_CODE: u32 = AGDX_DELIVERY_BASE + 15;
268/// Managed command code: read the outcome of a catalog mutation by its operation id.
269pub const AGDX_FILTER_OPERATION_CODE: u32 = AGDX_DELIVERY_BASE + 16;
270/// Internal command code: the streaming server resolves the execution policy of a
271/// filtered read (a saved revision or a group binding). Never sent by a client.
272pub const AGDX_RESOLVE_FILTER_POLICY_CODE: u32 = AGDX_DELIVERY_BASE + 17;
273/// Internal command code: the streaming server waits for the next change of the
274/// filter catalog its managed backend replayed. A zero wait confirms cached policies
275/// before use. Never sent by a client.
276pub const AGDX_WATCH_FILTER_CATALOG_CODE: u32 = AGDX_DELIVERY_BASE + 18;
277
278// Per-surface op-schema versions, stamped on every request envelope (or, for
279// the agent surface, carried as the `agdx.av` header). A peer rejects a payload
280// it cannot decode rather than mis-reading a skewed schema.
281/// Wire version of the authorization command envelopes.
282pub const AUTHZ_OP_VERSION: u32 = 1;
283/// Wire version of the query envelope.
284pub const QUERY_OP_VERSION: u32 = 1;
285/// Wire version of the control envelope.
286pub const CONTROL_OP_VERSION: u32 = 1;
287/// Wire version of the KV op envelopes.
288pub const KV_OP_VERSION: u32 = 1;
289/// Wire version of the fenced-lease op family: `KvLease`, `KvLeaseRenew`,
290/// `KvRelease`, and `KvCasFenced`. The holder-identity shape was finalized
291/// before publication, so it remains at version 1 with the rest of the KV
292/// surface. Its required fields have no serde defaults and
293/// [`crate::validate::Validate`] rejects any other `v` fail-closed.
294pub const KV_LEASE_OP_VERSION: u32 = 1;
295/// Wire version of the fork op envelopes.
296pub const FORK_OP_VERSION: u32 = 1;
297/// Wire version of the graph op envelopes.
298pub const GRAPH_OP_VERSION: u32 = 1;
299/// Wire version of the consumer-filter envelopes (reads, acknowledgments,
300/// previews, tests, catalog requests, and their replies).
301pub const FILTER_OP_VERSION: u32 = 1;
302
303/// Wire version of the mixed-operation batch request and reply
304/// ([`crate::batch`]). The items inside version themselves: each rides its own
305/// op's request frame with that op's own `v`.
306pub const BATCH_OP_VERSION: u32 = 1;
307
308/// Versions the change-feed record (`ChangeRecord.v`). Checked by consumers of
309/// the changes topic. The feed is advertised by the `WATCH` feature bit.
310pub const CHANGE_OP_VERSION: u32 = 1;
311/// Wire version of the client-metadata discovery request and reply
312/// ([`crate::clients`]).
313pub const CLIENT_METADATA_OP_VERSION: u32 = 1;
314/// Wire version of public checkpoint mutation requests and status replies.
315pub const CHECKPOINT_OP_VERSION: u32 = 1;
316/// Server-to-backend destination HTTP carriage version.
317pub const DESTINATION_HTTP_OP_VERSION: u32 = 1;
318/// Wire version of the agent presence body ([`crate::agent::AgentPresence`]) an
319/// agent advertises in its connection metadata. Carried in the body's own `v`
320/// field, not out-of-band, because presence rides the opaque connection-metadata
321/// bytes with no envelope header to select a decoder.
322pub const PRESENCE_OP_VERSION: u32 = 1;
323/// Wire version of the agent envelope (the Agent Data Exchange Protocol). Carried
324/// out-of-band as the typed `agdx.av` header, never inside the body: a durable
325/// log record must select its decoder before any body byte is read.
326pub const AGENT_OP_VERSION: u32 = 1;
327
328/// Whether a managed read may carry a [`crate::mutation::ManagedReadEnvelope`]
329/// barrier: the reads of the key-value, fork and graph surfaces, whose state
330/// the mutation logs fold, and the session reads, whose state the session
331/// fold builds from the session source topics.
332pub const fn is_barrier_read(code: u32) -> bool {
333    matches!(
334        code,
335        AGDX_KV_GET_CODE
336            | AGDX_KV_SCAN_CODE
337            | AGDX_KV_NAMESPACES_CODE
338            | AGDX_KV_EXISTS_CODE
339            | AGDX_FORK_LIST_CODE
340            | AGDX_GRAPH_QUERY_CODE
341            | AGDX_GRAPH_NEIGHBORS_CODE
342            | AGDX_SESSION_GET_CODE
343            | AGDX_SESSION_LIST_CODE
344            | AGDX_SESSION_EVENTS_CODE
345            | AGDX_SESSION_STATE_CODE
346            | AGDX_SESSION_LINKS_CODE
347            | AGDX_SESSION_SOURCES_CODE
348            | AGDX_SESSION_CHANGES_CODE
349    )
350}
351
352/// Whether a backend-served managed command changes state and therefore must
353/// carry a stable operation identity across transport retries. Iggy's custom
354/// authorization mutations use their established request `mutation_id`
355/// instead of this managed envelope.
356pub const fn is_idempotent_managed_request(code: u32) -> bool {
357    matches!(
358        code,
359        AGDX_BATCH_CODE
360            | AGDX_KV_SET_CODE
361            | AGDX_KV_DELETE_CODE
362            | AGDX_KV_DELETE_MANY_CODE
363            | AGDX_KV_CAS_CODE
364            | AGDX_KV_EXPIRE_CODE
365            | AGDX_KV_PATCH_CODE
366            | AGDX_KV_LEASE_CODE
367            | AGDX_KV_LEASE_RENEW_CODE
368            | AGDX_KV_RELEASE_CODE
369            | AGDX_KV_CAS_FENCED_CODE
370            | AGDX_KV_COPY_CODE
371            | AGDX_KV_MOVE_CODE
372            | AGDX_FORK_CREATE_CODE
373            | AGDX_FORK_DELETE_CODE
374            | AGDX_FORK_PROMOTE_CODE
375            | AGDX_FORK_PUT_CODE
376            | AGDX_GRAPH_UPSERT_CODE
377            | AGDX_CHECKPOINT_CODE
378            | AGDX_CONTROL_PUBLISH_CODE
379    )
380}