Skip to main content

SessionMeta

Struct SessionMeta 

Source
#[non_exhaustive]
pub struct SessionMeta { 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 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>, }
Expand description

Metadata recovered from a session log.

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.

§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.

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> 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> 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 = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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