Envelope
Every session object is stored as an envelope — a JSON document with the following top-level fields:
The
value object always begins with a type string that determines the payload shape:
Alias grammar (the namespace)
An alias is a path — one or more/-separated segments — so a session’s objects form a filesystem-like
namespace (e.g. README.md, missions/a1b2c3/graph, system/config.v2).
Uppercase, dots (including leading dots such as
.gitignore), and @ are allowed, so aliases can mirror real
repository paths. The grammar is enforced when an object is created or overwritten; reads, deletes, and listing
accept any alias, so objects predating the grammar remain accessible.
This is a session object’s own alias, not to be confused with a session’s or schedule’s alias — the
short, stable name used in place of an id, documented in Alias Grammar.
The two grammars are deliberately incompatible and never share a value.
List Session Objects navigates this namespace with prefix
(scope a subtree), delimiter: "/" (browse one level as folders), and cursor pagination.
Managing Session Objects
Uploading an object fires a
session_object_modified
session event. Deleting it fires
session_object_deleted.
Types
Some types have additional incremental operations and real-time events beyond the basic upload/download/list.
The
thread and graph types are envelope-based: uploading the envelope creates the container,
and dedicated commands manage the items or elements. Deleting the envelope via
delete_session_object cascades and removes all associated items or elements.
