Skip to main content

SessionMeta

Struct SessionMeta 

Source
#[non_exhaustive]
pub struct SessionMeta {
Show 19 fields pub source: SessionSource, pub session_id: Option<String>, pub model: Option<String>, pub cwd: Option<PathBuf>, pub system_prompt: Option<String>, pub codex_headers: Vec<Value>, pub codex_provenance: Vec<Value>, pub native_residue: Vec<Value>, pub native_residue_source: Option<String>, pub opencode_headers: Vec<Value>, pub goose_header: Option<Value>, pub agent_id: Option<String>, pub parent_tool_use_id: Option<String>, pub lineage: BTreeMap<String, String>, pub trigger: Option<Trigger>, pub surface: Option<SurfaceKey>, pub profile: Option<String>, pub recurrence: Option<Recurrence>, pub cross_surface: Option<CrossSurface>,
}

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§source: SessionSource

The tool that wrote the log.

§session_id: Option<String>

The session/rollout id.

§model: Option<String>

The model the session was running.

§cwd: Option<PathBuf>

The working directory the session ran in.

§system_prompt: Option<String>

The system / base-instructions prompt, when the log records it.

§codex_headers: Vec<Value>

Verbatim source-format header records (the Codex session_meta / turn_context lines), preserved so re-export can replay the exact header the original tool expects rather than guessing its required fields.

§codex_provenance: Vec<Value>

Exact source lines for Codex execution/provenance records that affect continuation semantics but must not be replayed as active events after a foreign-format hop. Each entry records its original physical-line index, discriminant, and verbatim JSONL text. Foreign writers carry the list in a namespaced extension; a later Codex export restores headers from it while keeping compaction/rollback/review records non-operative, avoiding a second rollback or compaction of the already-normalized view.

§native_residue: Vec<Value>

PARITY-23: generalized source-native residue records for NON-codex sources — {record_index, kind, raw} entries captured at load time (or restored from a portable v2 envelope) so cross-format hops can return them exactly. Codex keeps its original dedicated store above.

§native_residue_source: Option<String>

The source format native_residue belongs to (e.g. claude_code).

§opencode_headers: Vec<Value>

The OpenCode analogue of Self::codex_headers (docs/interop/opencode-pi-spec.md §1.2/§2.1): the verbatim SessionInfo record (always element 0, or Value::Null if somehow absent), plus any captured session_diff/todo side-records — each wrapped as {"key": [...], "value": ...}, mirroring the envelope shape raw uses, so a consumer can tell which storage key a header record belongs to. These replay only via the direct-write fallback (Session::to_opencode_direct_write); opencode import has no ingestion path for session_diff/todo (S5).

§goose_header: Option<Value>

Goose’s native session-export object with conversation removed. Goose stores sessions in SQLite but defines this JSON object as its official import/export boundary. Keeping the shell lets an unchanged direct round-trip remain byte exact while appended turns are spliced into a stock-importable artifact without guessing native metadata.

§agent_id: Option<String>

For a Claude Code subagent session: its agentId (the agent-<id> file stem). None for top-level sessions.

§parent_tool_use_id: Option<String>

For a subagent session: the tool_use_id of the parent Task call that spawned it, recovered from the parent transcript’s tool result. Best effort — None if the link could not be established.

§lineage: BTreeMap<String, String>

Cross-file lineage keys for multi-file/multi-agent sessions (Codex parent_thread_id, forked_from_id, thread_source, and the source.subagent.thread_spawn fields agent_role / agent_nickname / depth). Empty for a plain top-level session. Used by Session::reconstruct_tree to nest children under their parents.

§trigger: Option<Trigger>

ORCH-3: why the session exists, when the source says.

§surface: Option<SurfaceKey>

ORCH-3: the conversation’s surface identity, when it has one.

§profile: Option<String>

ORCH-3: routed config home (Hermes profile / OpenClaw agent / Codex profile).

§recurrence: Option<Recurrence>

ORCH-3: the job a recurring session belongs to.

§cross_surface: Option<CrossSurface>

ORCH-3: moved-to-another-surface state.

Implementations§

Source§

impl SessionMeta

Source

pub fn trigger_or_default(&self) -> Trigger

The trigger, defaulting from what the loaders already know: a spawned child (agent_id / a delegate lineage) is Parent; otherwise Human.

Source

pub fn workspace(&self) -> (WorkspaceKind, Option<String>)

UNI-9 workspace with the D2 precedence: repo when a cwd exists, else channel when the surface is a channel, else none. Derived, never stored.

Source

pub fn workspace_ref(&self) -> WorkspaceRef

Self::workspace as the wire value. Naming only — the precedence stays in workspace().

Trait Implementations§

Source§

impl Clone for SessionMeta

Source§

fn clone(&self) -> SessionMeta

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SessionMeta

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more